Невідомий / непідтримуваний двигун зберігання даних: InnoDB | MySQL Ubuntu


45

Нещодавно я модернізував з попереднього LTS Ubuntu до Precision і тепер mysql відмовляється запускати. Коли я намагаюся запустити, він скаржиться на таке:

╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start

І це показує в "/var/log/mysql/error.log":

120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting

120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete

Я перевірив дозволи для всіх каталогів mysql, щоб переконатися, що він має право власності, і я також перейменував previu ib_logs, щоб він міг їх переробити. Мені просто не доводиться десь із цим питанням переглядати результати Google протягом 2 годин.


Між іншим, я отримав mysql для запуску, коментуючи "skip_innodb" запис у my.cnf. Але я абсолютно впевнений, що я не повинен був вирішити це таким чином.
Гаррет

Будь ласка, покажіть усі змінні з my.cnf, які є налаштуваннями
innodb

Відповіді:


34

Після перевірки журналів я виявив таку помилку:

[ERROR] Unknown/unsupported storage engine: InnoDB

Я видалив ці файли:

rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1 

у /var/lib/mysql

Це вирішило мою проблему після перезавантаження.


7
rmкоманда використовується для видалення файлів , а не перейменовувати їх, наскільки я знаю ...
Ітай Ganot

2
Ці файли містять фактичні дані для вашої бази даних. Видалити їх не потрібно.
Стефан Ласевський

Ні, ibdataфайл містить дані (якщо у вас немає файлу за таблицею). Файли ib_logfile - це журнали повторення, які містять дані для транзакцій, що змінюють базу даних, які, можливо, були в процесі, коли / якщо база даних вийшла з ладу. Якщо вам вдалося успішно відключити сервер, видалення цих файлів журналу вам не зашкодить. Якщо він розбився, значить, вони вам потрібні. Але це правдива відповідь. Якщо ваш файл my.cnf змінить параметр innodb_log_file_size, і він більше не відповідає цим двом файлам, ви отримаєте повідомлення про помилку, яке заявляє ОП. Видалення / переміщення настільки нових можна виправити.
Сафадо

2
Чому правки можна вносити лише за 5 хвилин - це поза моїм досвідом ... Я мав би сказати, що це потенційне виправлення вищезгаданої помилки. Як заявлено в ОП, це було не потрібне виправлення.
Сафадо

1
Ви завжди можете їх перейменовувати, напр mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak.
kenorb

23

Якщо ви дійсно потрібні skip-innodb(використовуйте регістр: низький слід пам'яті), то, звичайно, не потрібно це коментувати. Однак якщо InnoDB є двигуном зберігання за замовчуванням, сервер не запуститься, поки ви не скажете, який механізм зберігання даних використовувати замість нього, наприклад, default-storage-engine=myisamдля MyISAM.

Отже, спробуйте це:

$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam

6
Спробуйте додати "default-storage-engine = myisam" до /etc/mysql/my.cnf у розділі [mysqld], якщо ви хочете мати "skip_innodb".
зашифровано

Працює прекрасно. Ура!
Боан

4
Що робити, якщо ви хочете підтримку innodb?
Нільзор

1
Mariadb на Centos 7 додано default-storage-engine=myisamу файл /etc/my.cnf під [mysqld]. Це зробило трюк. Thx
Дамодар Баш'ял

12

Якщо ви використовуєте MySQL 5.6+ і хочете вимкнути InnoDB, не забувайте " --default-tmp-storage ", інакше він не працюватиме:

Щоб вимкнути InnoDB, використовуйте --innodb = OFF або --skip-innodb. У цьому випадку, оскільки двигуном зберігання за замовчуванням є InnoDB, сервер не запуститься, якщо ви також не використовуєте -default-storage-engine і --default-tmp-storage-engine для встановлення за замовчуванням для іншого двигуна як для постійного, так і для постійного ЧАСОВІ таблиці.

http://dev.mysql.com/doc/refman/5.6/uk/innodb-parameters.html#option_mysqld_ignore-builtin-innodb

Ви можете додати це до свого my.cnf:

[mysqld] 
innodb=OFF 
ignore-builtin-innodb 
skip-innodb
default-storage-engine=myisam 
default-tmp-storage-engine=myisam

просто для того, щоб переконатися, що воно буде працювати


+1, ніколи не помічайте офіційного документа. слід встановити default-storage-engineі default-tmp-storage-engine, дякую.
Giberno

7

Перевірте свій журнал помилок mysql.

tail -100 /var/log/mysql/error.log

Якщо ваш журнал говорить (як у мого):

InnoDB: ініціалізація буферного пулу, розмір = 128,0 млн
InnoDB: помилка mmap (137363456 байт); errno 12
[ПОМИЛКА] InnoDB: Неможливо виділити пам'ять для буферного пулу

У вас недостатньо пам'яті, щоб використовувати буфер за замовчуванням розміром 128 М

Відредагуйте конфігураційний файл /etc/mysql/my.cnf, додавши рядок, щоб вказати менший розмір innodb_buffer_pool_size.

# make the buffer pool smaller than 128M since we only have 1 GB of total RAM
innodb_buffer_pool_size = 16M

Збережіть конфігураційний файл та запустіть mysql

sudo service mysql start

Тут не місце. Але також можуть бути висячі процеси веб-сервера або щось з'їдання оперативної пам’яті, переконайтесь, що теж.
sjas

0

Спробуйте ще 2 речі. 1. Зменшіть розмір пулу буфера innodb. 2. Відредагуйте початковий сценарій mysql та додайте параметр --innodb.

Цікаво також, чи ваш пакет баггі. Чи можете ви спробувати іншу другорядну версію?

Крім того, я припускаю, що ваш сервер mysql також був оновлений? Може, ця версія зламана? Точність ще не остаточна.


Вже зробив це, безрезультатно.
Гаррет

Вибачте, відредагував це деякі речі, які потрібно спробувати, більше як поганий пакет. Спробуйте використовувати версію mysql.com або percona, які, як правило, більш стійкі.
johnshen64

Також переконайтесь, що старий пакет повністю очищено, коли встановлено новий.
johnshen64

Чи очищення пакета повністю призведе до втраченої інформації бази даних?
Гаррет

Якщо не слід, але щоб бути безпечним, завжди слід створювати резервну копію DBS.
johnshen64

0

Я отримав цю помилку, коли видалив місце, для якого я використовую tmpdir. Якщо ви нещодавно змінили своє tmpdir, ви, можливо, захочете перевірити, чи є він дійсним місцем для запису.

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