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.

Цікаво, що "5242880 байтів файлу журналу" показано в помилці mysql? Це перша база даних в двигуні InnoDB на цьому сервері, тож коли і де створюється цей файл журналу? Як у цьому випадку я можу включити директиву innodb_log_file_size в my.cnf?

EDIT

Я спробував видалити / 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. Він скаржиться на відсутність файлів журналів, але створить їх, і все буде добре.

1
Привіт, дякую за вашу відповідь, я спробував ваш метод, але все-таки не вдався.
джек

44
Видалення ib_logfile0 та ib_logfile1 вирішило для мене проблему.
Темновит

1
І для мене. Дуже дякую, у нас є вікі!
Стівен Кеннеді

1
Оскільки я переміщую нещодавно встановлений db, пропускаю крок 1-4 і починаю з 5 - і це працює :)
Limbo Peng

Дякую @Temnovit видалення цих 2-х файлів також зробило для мене трюк.
Башан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.