На одном сервере часто работают сайты использующие базы данных таблицы которых имеют различный тип: MyISAM и InnoDB. Таблицы InnoDB гораздо более эффективны с точки зрения оптимизации приложений, но работать с ними на уровне сервера баз данных сложнее. В частности, восстановление таблиц при их повреждении является довольно трудозатратной процедурой.
Лог всех данных касающихся работы MySQL пишется в один файл, в нем иногда можно видеть записи следующего типа:
Как исправить ошибку InnoDB: Unable to lock ./ibdata1, error: 11
Часто обозначенные выше ошибки можно увидеть в логе когда сервер баз данных не запускается — часто после перезагрузки или сбоя питания.
Из записи Check that you not already have another mysqld process явно следует, что, вероятно, на сервере по какой-то причине запущены или пытаются запуститься 2 процесса MySQL.
Проверяем так ли это
ps aux | grep mysql
Если обнаружен какой-либо процесс можно отледить его используя strace или завершить стандартным способом или через kill.
Ошибка InnoDB: Unable to lock /path/to/ibdata1, error: 11 обычно соседствует с первой — ее причина в невреных правах на некоторые InnoDB таблицы в /var/lib/mysql или другом каталоге являющемся docdir для сервера баз данных
Исправить ошибку можно выполнив несколько простых команд.
Останавливаем MySQL — часто он уже остановлен и не запускается.
/etc/init.d/mysql stop
Перемещаем файл ibdata1, в котором хранятся все данные и индексы InnoDB в сторонний каталог делая бэкап
mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak
Копируем файл обратно восстанавливая права.
cp -a /var/lib/mysql/ibdata1.bak /var/lib/mysql/ibdata1
Запускаем mysql:
/etc/init.d/mysql start
Также скорректировать права на таблицы можно вручную перейдя в /var/lib/mysql и выполнив chown mysql: на все базы данных и таблицы, для которых установлен другой пользователь (часто это root, такое случается когда разработчики редактируют таблицы от имени root). Таблицы с некорректными правами могут успешно обрабатываться, проблемы обычно дают о себе знать после перезапуска MySQL.
MySQL после корректировки прав должен корректно запуститься, также при этом необходимо проверить логи на предмет поврежденных таблиц, при их наличии — восстановить.