Ошибка "Неизвестный табличный движок" InnoDB "при запросе. после перезапуска mysql

У меня есть база данных mysql на сервере S1 (версия mysql 5.1.41-3ubuntu12.7-log), я создал master-slave для этой базы данных на сервере S2 (версия mysql 5.1.54-1ubuntu4-log).
БД на S1 использовался один файл данных (ibdata). после сброса БД на S2 я установил innodb_file_per_table = 1. это сделало каждую таблицу отдельным файлом ibd. теперь все прошло нормально и гладко.
но после перезапуска mysql на S2 у меня возникла проблема с получением этой ошибки:
Error 'Unknown table engine 'InnoDB'' on query. Default database: MyDB и когда я пытаюсь показать движки

show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

innodb отсутствует в списке.
в журнале ошибок я вижу следующее:

InnoDB: Database physically writes the file full: wait...
InnoDB: Cannot initialize created log files because
InnoDB: data files are corrupt, or new data files were
InnoDB: created when the database was started previous
InnoDB: time but the database was not shut down
InnoDB: normally after that.
111016  8:24:11 [ERROR] Plugin 'InnoDB' init function returned error.
111016  8:24:11 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
111016  8:24:11 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=S2-relay-bin' to avoid this problem.

Я пытался удалить ib_logfiles, но это тоже не сработало. Кто-нибудь сталкивался с такой проблемой раньше ?? любая идея высоко ценится
Спасибо


person Alaa    schedule 16.10.2011    source источник
comment
попробуйте youdidwhatwithtsql.com/unknown-table-engine-innodb/760   -  person Bala    schedule 16.10.2011


Ответы (5)


Вы можете удалить файлы журнала InnoDB в каталоге данных mysql с именами ib_logfile0 и ib_logfile1. Однако не удаляйте файл данных InnoDB (ibdata1).

После этого InnoDB попытается восстановиться после перезапуска mysqld.

посмотрите основной файл журнала:

120413 17:34:47  InnoDB: Initializing buffer pool, size = 64.0M
120413 17:34:47  InnoDB: Completed initialization of buffer pool
120413 17:34:47  InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 32 MB
InnoDB: Database physically writes the file full: wait...
120413 17:34:48  InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 32 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
120413 17:34:49  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
person Nikl    schedule 13.04.2012
comment
ты только что спас мне жизнь. +1 - person A.J.; 14.07.2014

Была аналогичная проблема после зависания и перезапуска сервера.

Данные в порядке - сообщение об ошибке вводит в заблуждение.

Остановите службу MySQL, удалите файлы журнала (ib_logfile*) из /var/lib/mysql и снова запустите службу MySQL. Просто убедитесь на 100%, что MySQL действительно не работает при удалении файлов журнала.

person Sych    schedule 19.02.2014

Я думаю, что конфигурация mysql для innodb, если вы установите innodb_buffer_pool_size = 2G, innodb не будет работать.

Обычно выдает ошибку

"Unknown table engine 'InnoDB".

если вы выбираете стол с системой innodb, попробуйте innodb_buffer_pool_size = 1G.

person Pathic    schedule 12.10.2012

Вы скомпилировали mysql с innodb? Если вы это сделали, у вас должны появиться кучи строк, относящихся к нему, когда вы запустите это:

strings `which mysqld` | grep innodb
person user314104    schedule 16.10.2011
comment
да, я сделал, и я получил много строк после выполнения вашей команды выше ... также был двигатель innodb и работал нормально, пока я не перезапустил mysql !! - person Alaa; 16.10.2011

Я столкнулся с той же проблемой. Ответ Никла помог мне найти проблему в основном файле журнала. InnoDB не смог выделить необходимую память при запуске. После очистки некоторых других процессов все заработало нормально.

Журналы показали следующее:

160219 9:20:23 InnoDB: Error: cannot allocate 12884918272 bytes of InnoDB: memory with malloc! Total allocated memory InnoDB: by InnoDB 49601872 bytes. Operating system errno: 12 InnoDB: Check if you should increase the swap file or InnoDB: ulimits of your operating system. InnoDB: On FreeBSD check you have compiled the OS with InnoDB: a big enough maximum process size. InnoDB: Note that in most 32-bit computers the process InnoDB: memory space is limited to 2 GB or 4 GB. InnoDB: We keep retrying the allocation for 60 seconds...

person Martin    schedule 19.02.2016