Назад | Перейти на главную страницу

Неизвестный / неподдерживаемый механизм хранения: InnoDB | MySQL Ubuntu

Недавно я обновился с предыдущей LTS Ubuntu до Precise, и теперь 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, чтобы убедиться, что он принадлежит владельцу, а также переименовал предыдущий ib_logs, чтобы он мог их переделать. Я просто не понимаю, где с этой проблемой прямо сейчас, после просмотра результатов Google в течение 2 часов.

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

[ERROR] Unknown/unsupported storage engine: InnoDB

Я удалил эти файлы:

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

в /var/lib/mysql

Это решило мою проблему после перезапуска.

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

Итак, попробуйте это:

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

Если вы используете 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/en/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

просто чтобы убедиться, что это сработает.

Проверьте журнал ошибок mysql.

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

Если в вашем журнале написано (как и в моем):

InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
[ERROR] InnoDB: Cannot allocate memory for the buffer pool

У вас недостаточно памяти для использования размера буфера по умолчанию 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

Попробуйте еще 2 вещи. 1. Уменьшите размер буферного пула innodb. 2. Отредактируйте исходный сценарий mysql и добавьте параметр --innodb.

Интересно также, не глючит ли ваш пакет. Не могли бы вы попробовать другую минорную версию?

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

Я получил эту ошибку, когда удалил местоположение, которое использую для tmpdir. Если вы недавно изменили tmpdir, вы можете проверить, является ли это допустимым местом для записи.