Mysql не удалось начать

4

Я использую виртуальную машину Ubuntu 12.04 LTS. На прошлой неделе виртуальная машина неожиданно остановилась, теперь mysql не запускается на виртуальной машине. Эти два события могут быть связаны, а могут и не быть.

Когда я пытаюсь подключиться:

$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Затем:

$ sudo service mysql start
start: Job failed to start

А также

$ dmesg

[ 1838.218400] type=1400 audit(1374633238.253:50): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18473 comm="apparmor_parser"
[ 1838.358656] init: mysql main process (18477) terminated with status 1
[ 1838.358695] init: mysql main process ended, respawning
[ 1839.269303] init: mysql post-start process (18478) terminated with status 1

А также

$ service mysql status
mysql stop/waiting

Я думаю, что это означает, что MySQL сбой при запуске:

$ sudo mysqld start
130723 21:51:24  InnoDB: Assertion failure in thread 3064211200 in file fut0lst.ic line 83
InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
02:51:24 UTC - mysqld got signal 6 ;

В соответствии с руководством я пошел в каталог данных (/ var / lib / mysql) и запустил это:

myisamchk --silent --force */*.MYI

Затем:

$ sudo mysqld
...
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
...

Моя база данных повреждена? Что я могу сделать, чтобы восстановить? Переустановить mysql? Что-то менее радикальное? Я в порядке с потерей базы данных, я просто хочу работающую систему.

Джон Нэгл
источник
Кажется, что таблицы innodb повреждены.
Джон Нэгл
1
Кажется, моя база данных была повреждена и помешала запуску mysql. Согласно инструкции, я добавил это в /etc/mysql/my.cnf: [mysqld] innodb_force_recovery = 6. Когда я перезапустил сервер, он запустился без сбоев.
Джон Нэгл
Ах, хорошо, приятно знать.
CS.
Кажется, моя база данных еще не пригодна для использования - но, по крайней мере, я думаю, что знаю проблему. Я собираюсь переустановить mysql и посмотреть, исправлена ​​ли проблема.
Джон Нэгл
Попробуйте удалить MySQL с параметром --purge, а затем переустановить его с нуля.
l1zard

Ответы:

1

Воссоздание файла mysqld.sock может помочь.

 cd /var/run/mysqld
 sudo touch mysqld.sock
 sudo chown mysql:mysql mysqld.sock
 sudo chmod 1777 mysqld.sock
 sudo service mysql restart

Если нет, сделайте следующее и опубликуйте результаты:

 cd /var/run/mysqld
 ls -al
CS.
источник
Не сработало "sudo service mysql restart" - "stop: неизвестный экземпляр: start: задание не удалось запустить". / var / run / mysqld имеет «rwxrwxrwt 1 mysql mysql 0 июля 23 22:01 mysqld.sock»
Джон Нэгл
Не берите в голову, в свете вашей новой информации выше, это не проблема.
CS.
0

Сломанную установку MySQL иногда можно обойти, запустив в безопасном режиме.

Внимание! Запуск MySQL в безопасном режиме снижает настройки безопасности, потенциально позволяя другому человеку получить доступ к вашим данным.

Для запуска в безопасном режиме выполните:

sudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables

Если вы обнаружите, что ваши таблицы действительно повреждены, можно предпринять несколько шагов для их исправления. Вот ссылка на хороший учебник. http://tech.amikelive.com/node-36/mysql-50-recovering-crashedcorrupted-innodb-database/

http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/

spuder
источник
0

Проверьте в my.cnf, найдите tmpместоположение папки . Затем проверьте разрешения этого местоположения 777. Becuas стандартные права доступа к папкам 755и форма tmpдолжна быть 777.

ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)

shgnInc
источник