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

Я настраиваю сервер репликации, и когда я пытаюсь запустить службу mysql в первый раз, это не удается:

[root@ravioli mysql]# service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]
[root@ravioli mysql]# tail /var/log/mysqld.log 
151013 13:41:27 [ERROR] Plugin 'InnoDB' init function returned error.
151013 13:41:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
/usr/libexec/mysqld: File '/databases/mysql/mysql_slow_queries.log' not found (Errcode: 13)
151013 13:41:27 [ERROR] Could not use /databases/mysql/mysql_slow_queries.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
151013 13:41:27 [ERROR] Unknown/unsupported storage engine: InnoDB
151013 13:41:27 [ERROR] Aborting

151013 13:41:27 [Note] /usr/libexec/mysqld: Shutdown complete

151013 13:41:27 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

Я подтвердил, что пользователь mysql видит и может писать /databases/mysql/mysql_slow_queries.log.

Затем я проверил getenforce и увидел, что он установлен на Enforcing.

Как настроить MySQL для хорошей работы с SELinux?


person a coder    schedule 13.10.2015    source источник


Ответы (3)


Все, что мне нужно было, это удалить два файла, а именно:

ib_logfile0

и

ib_logfile1

Затем, вернувшись к запуску mysql, все заработало.

person Christopher Kikoti    schedule 10.01.2017
comment
Для тех, кто использует homebrew на Mac, я нашел расположение этих файлов в /usr/local/var/mysql/ib_logfile0 и /usr/local/var/mysql/ib_logfile1. Их удаление решило проблему. - person user101289; 18.01.2021
comment
Мне также пришлось удалить ibdata1 файл и каталог performance_schema - person Sathish; 26.05.2021

Это решило мою проблему

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoremove

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

sudo apt-get install mysql-server
person Anders B    schedule 10.06.2016
comment
Возможно, второе autoremove должно быть autoclean? - person Buffalo; 31.07.2018

Хорошо, на самом деле это было много проще, чем ожидалось.

По умолчанию SELinux равно Enforcing, что предотвращает непредвиденные записи в файловой системе. Мне просто нужно было сообщить SELinux, что MySQL может писать в нестандартный каталог. А именно:

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql(/.*)?"
-bash: semanage: command not found.

Дерп. Чтобы установить semanage, используйте это:

yum install policycoreutils-python

Теперь снова запустите команду. Это может занять несколько минут...

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql(/.*)?"

Убедитесь, что SELinux настроен для этого нового каталога, просмотрев этот файл конфигурации:

[root@ravioli]#  grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local

/databases/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0

Можно добавить дополнительные каталоги, например, если у вас где-то есть выделенный каталог tmp.

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql_tmp(/.*)?"

Еще раз проверьте конфиг:

[root@ravioli]# grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local

/databases/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0
/databases/mysql_tmp(/.*)?    system_u:object_r:mysqld_db_t:s0

Наконец, обновите разрешения, используя restorecron

restorecon -R -v /www/databases/mysql/

и в моей установке,

restorecon -R -v /www/databases/mysql_tmp/

Теперь проблема:

service mysqld start

Бене.

Starting mysqld:         [  OK  ]
person a coder    schedule 13.10.2015