Показать страницуСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Перевод mikbill в innodb. ====== <note important>Перед началом операции сделайте бекап ВСЕХ БД которые находятся на сервере.</note> ===== Подготовка ===== <note tip>Сохраните конфиг MySQL на случай отката.</note> **Centos** <code> cp /etc/my.cnf /etc/my.cnf.proto </code> **Debian** <code> cp /etc/mysql/my.cnf /etc/mysql/my.cnf.proto </code> Переведите все базы данных, где используется Engine=InnoDB частично или полностью, в MyISAM **1** Выполнить mikbill-to-MyISAM.sh Запросит логин и пароль, вводим пользователь **root** и его пароль. <code> ./mikbill-to-MyISAM.sh Пользователь:root Пароль:password </code> Скрипт переведет все таблицы базы mikbill в MyISAM, это займёт некоторое время, в зависимости от мощности Вашего сервера. <note warning>Если на сервере есть и другие БД, которые вы создали сами - переведите их в MyISAM вручную.</note> **2** Выполните 2й раз mikbill-to-MyISAM.sh и убедиться, что **convert2.sql** пуст. Если он не пуст, то вручную сконвертировать оставшиеся таблицы и повторить выполнение скрипта. **3** Текущий конфиг Mysql заменить этим содержимым: <code> [client] port = 3306 socket=/var/lib/mysql/mysql.sock [mysql] loose-local-infile=1 [mysqld_safe] err-log = /var/log/mysql/mysql.err [mysqld] user = mysql port = 3306 socket = /var/lib/mysql/mysql.sock pid-file = /var/run/mysqld/mysqld.pid log-error = /var/log/mysql/mysql.err basedir = /usr datadir = /var/lib/mysql skip-external-locking symbolic-links=0 skip-name-resolve #system language = /usr/share/mysql/russian loose-local-infile=1 query_cache_size = 256M query_cache_limit = 256M join_buffer_size = 256M max_join_size=256M max_connect_errors = 1K max_allowed_packet=16M table_open_cache = 1k table_cache = 1k max_heap_table_size = 1024M tmp_table_size = 1024M thread_cache_size = 32 max_connections = 64 #Myisam #т.к. его не используем, уменьшаем до минимума key_buffer_size = 8M sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 2M myisam_sort_buffer_size = 2M #ниже включается бинари лог, разкоментируйте следующие 2 строки чтобы включить #server-id=1 #log-bin=mysqld-bin tmpdir = /tmp/ #innodb innodb_file_per_table innodb_flush_method=O_DIRECT innodb_buffer_pool_size = 1G innodb_additional_mem_pool_size = 4M innodb_data_home_dir = /var/lib/mysql/ innodb_log_group_home_dir = /var/lib/mysql/ innodb_data_file_path = ibdata1:10M:autoextend innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_log_files_in_group = 2 innodb_flush_log_at_trx_commit = 0 innodb_lock_wait_timeout = 70 [mysqldump] quick max_allowed_packet = 16M [isamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [myisamchk] key_buffer_size = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid </code> **4** Отредактируйте в конфиге параметры: <code> thread_concurrency = CPU*2 innodb_thread_concurrency = CPU*2 innodb_buffer_pool_size = 3G </code> **ОЗУ** для innodb как минимум 3Г и больше **CPU** - количество ядер <note important> Проверьте эти пути, сравните их с оригинальным конфигом. <code> socket=/var/run/mysqld/mysqld.sock err-log = /var/log/mysql/mysql.err pid-file = /var/run/mysqld/mysqld.pid log-error = /var/log/mysql/mysql.err innodb_data_home_dir = /var/lib/mysql/ innodb_log_group_home_dir = /var/lib/mysql/ </code> </note> В Debian и FreeBSD пути нужно подправить. **4** Остановите сервис MySQL **Centos** <code> /etc/init.d/mysqld stop </code> **Debian** <code> /etc/init.d/mysql stop </code> **5** Убедитесь, что сервис действительно остановился. <code> ps auxfw|grep mysql </code> Вывод должен быть пустым. **6** Удалите файлы данных и логов InnoDB <code> rm /var/lib/mysql/ibdata1 rm /var/lib/mysql/ib_logfile0 rm /var/lib/mysql/ib_logfile1 </code> **7** Запустите сервис **Centos** <code> /etc/init.d/mysqld start </code> **Debian** <code> /etc/init.d/mysql start </code> **8** Выполните mikbill-to-InnoDB.sh====== <code> ./mikbill-to-InnoDB.sh Пользователь:root Пароль:password </code> Скрипт переведет все таблицы в InnoDB, это займёт некоторое время. По завершению работы скрипта, запустите его повторно, чтобы убедится, что все таблицы сконвертированы успешно. Убедитесь, что после повторного выполнения **mikbill-to-InnoDB.sh** файл convert4.sql пуст. В противном случае сконвертируйте таблицы в ручном режиме. billing/mysql_myisam_inodb.txt Последнее изменение: 8 лет назад — ld