LINUX.ORG.RU
решено ФорумAdmin

mysqld внезапно не стартует

 , ,


0

0

В один прекрасный день необходимо было рестартнуть MySQL, но внезапно получилось вот что.

Debian 6.0.5, если что. Стартую:

service mysql start
Получаю:
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

лог /var/log/syslog (вырезал кусок после service mysql start)

Кто-нибудь может подсказать, в чём дело и как это исправить? На форуме была похожая тема, там предлагали пурджнуть и заново поставить мускуль, мне это не помогло. Если нужна ещё какая-то информация (логи или что ещё) - пожалуйста, напишите.

★★★★★

Есть те, кто еще не делает бекап и те, кто уже делают.

zgen ★★★★★
()

Место на диске не закончилось?

fbiagent ★★★
()

Бэкап базы у меня, разумеется, есть. Место на диске ещё много.

sT331h0rs3 ★★★★★
() автор топика

Похоже, пришел пушной зверек. InnoDB видит в своем дата-файле страницы из сплошных нулей. Таких там не бывает, обычно.

Если есть бекап - просто удаляй (ну или передвигай куда-нибудь) свой datadir.

Если бекапа нету- я бы сначала попробовал со всякими innodb_force_recovery запуститься (но откопируй datadir куда-нибудь перед запуском), а если не поможет, то google://percona+data+recovery+tool+innodb

gods-little-toy ★★★
()
Ответ на: комментарий от erfea

Нет, при таком раскладе запустилось бы нормально )

Там именно что повреждена база физически.

Shtsh ★★★★
()
Ответ на: комментарий от gods-little-toy

Я делал бэкап с помощью mysqldump, в итоге имею sql файлик. Я так понимаю, что для восстановления нужно сделать что-то вроде:

mysql < backup.sql
Но mysqld не запускается. Как я понял, требуется удалить содержимое /var/lib/mysql/, чтобы запустилось нормально?

sT331h0rs3 ★★★★★
() автор топика
Ответ на: комментарий от sT331h0rs3

Как я понял, требуется удалить содержимое /var/lib/mysql/, чтобы запустилось нормально?

Часто достаточно грохнуть просто /var/lib/mysql/ib_logfile[01] и /var/lib/tc.log

При чём после этого ещё и InnoDB базы как ни в чём ни бывало, порой, начинают работать :)

KRoN73 ★★★★★
()
Ответ на: комментарий от sT331h0rs3

Похорошему, перджнуть пакет, удалить «rm -rf /var/lib/mysql/*». После накатить пакет. Вот когда накатишь, можно восстанавливать.

mysql -s -u <user> -p<password> <database> < /path/to/your/damp.sql
как то так

erfea ★★★★★
()
Ответ на: комментарий от sT331h0rs3

mysql < backup.sql

правильно.

Как я понял, требуется удалить содержимое /var/lib/mysql/, чтобы запустилось нормально?

Ну, после удаления содержимого надо еще запустить mysql_install_db, чтобы оно создало пустую базу с системными таблицами. При наличии системных таблиц сервер сможет запуститься, после чего можно залить backup.sql

gods-little-toy ★★★
()

Всем спасибо, господа, ЛОР всемогущ! :3
Решилось пурджем mysql-server и mysql-client, удалением всего и всея из /var/lib/mysql, установкой mysql-server и mysql-client и затем:

mysql -u root -p < backup.sql

sT331h0rs3 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

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

erfea ★★★★★
()
Ответ на: комментарий от erfea

В виндавс нету такого понятия как перджнуть пакет.

Зато там есть сам подход. Снести, почистить и переставить. Чтобы через некоторое время снова пройтись по тем же граблям :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

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

erfea ★★★★★
()
Ответ на: комментарий от erfea

Не дистриб же переустановить предложили...

Это уже был бы не Windows-way, а Ъ-Windows-way :)

Можно, конечно, и чинить заглючившую базу, но зачем?

Например, чтобы завтра, имея базу, дамп который несколько часов поднимается, оживить машину не через несколько часов, а через несколько минут.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Например, чтобы завтра, имея базу, дамп который несколько часов поднимается, оживить машину не через несколько часов, а через несколько минут.

ТС это в вопросе не обозначил.

erfea ★★★★★
()
Ответ на: комментарий от KRoN73

Судя по тому, что человек спрашивает, у него уровень очень мал, поэтому к нему подход «посмотри что с базой, почини, запусти, восстанови из бэкапа» для него сложен. Ему предложили простой. Он сработал. Человек вырастет - поймет.

Я вот вообще не стал отвечать (кроме первого поста), потому что разжевывать мне неинтересно.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Думаю, что сработавший способ проще и эффективнее в данном случае при наличии бэкапа.
Если бы не было бэкапа, тогда стал бы чинить базу. Иначе - зачем?

sT331h0rs3 ★★★★★
() автор топика
Ответ на: комментарий от sT331h0rs3

Если бы не было бэкапа, тогда стал бы чинить базу. Иначе - зачем?

Затем, что надо знать, как чинить базу и как сделать так, чтобы mysql запускался, не переустанавливая его, тем более, что «переустановка» это набор операций, которые неплохо бы знать. В будущем пригодится.

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.