Я просто добавил следующие строки в /etc/mysql/my.cnf после того, как преобразовал одну базу данных для использования движка InnoDB.
innodb_buffer_pool_size = 2560M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 16
innodb_flush_method = O_DIRECT
Но он вызывает ошибку «ERROR 2013 (HY000) at line 2: Lost connection to MySQL server during query» при перезапуске mysqld. И журнал ошибок mysql показывает следующее
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting
Я закомментировал эту строку
# innodb_log_file_size = 256M
И он успешно перезапустил mysql.
Интересно, что "5242880 байт файла журнала" показало в ошибке mysql? Это первая база данных на движке InnoDB на этом сервере, поэтому когда и где создается этот файл журнала? В этом случае, как я могу включить директиву innodb_log_file_size в my.cnf?
РЕДАКТИРОВАТЬ
Я попытался удалить / var / lib / mysql / ib_logfile0 и перезапустить mysqld, но это все равно не удалось. Теперь в журнале ошибок отображается следующее.
100118 21:27:11 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
разрешение
Теперь он работает после удаления ib_logfile0 и ib_logfile1 в / var / lib / mysql
InnoDB безумно разборчив в своих настройках; если что-то не так, он просто сдастся и пойдет домой. Чтобы изменить размер файла журнала без потери данных: