InnoDB: Ошибка: файл журнала ./ib_logfile0 имеет другой размер

106

Я просто добавил следующие строки в /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

Но это выдает «ОШИБКА 2013 (HY000) в строке 2: Потерянное соединение с сервером MySQL во время запроса» перезапускает 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.

Интересно, что за ошибка в mysql показала «5242880 байт файла журнала»? Это первая база данных на движке 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

Джек
источник

Ответы:

121

InnoDB безумно требователен к своей конфигурации; если что-то не так, он просто сдастся и пойдет домой. Чтобы изменить размер файла журнала без потери данных:

  1. Отмените любые изменения конфигурации, внесенные в размер файла журнала, и снова запустите MySQL.
  2. В вашем MySQL: SET GLOBAL innodb_fast_shutdown = 0;
  3. Стоп MySQL
  4. Внесите изменения в размер файла журнала.
  5. Удалите оба файла журнала.
  6. Запустите MySQL. Он будет жаловаться на отсутствие файлов журнала, но он их создаст, и все будет хорошо.
ombble
источник
1
Привет, спасибо за ваш ответ, я попробовал ваш метод, но все равно не удалось.
Джек
44
Удаление ib_logfile0 и ib_logfile1 решило проблему для меня.
Темновит
1
И для меня. Большое спасибо, мы вернули нашу вики!
Стивен Кеннеди
1
Поскольку я перемещаю недавно установленную базу данных, я пропускаю шаги 1-4 и начинаю с 5 - и это работает :)
Limbo Peng
Спасибо @Temnovit, удаление этих 2 файлов также помогло мне.
Башан