Восстановление таблиц БД MySql после сбоя
Редактировать

Иногда в процессе работы MySql могут возникать поломки таблиц. вызвано это может быть разными причинами, от неисправности оборудования до программных сбоев.

Делаем бэкап

Перед началом работ всегда желательно выполнить сохранение резервной копии БД на случай потери данных при восстановлении.

Для этого нужно узнать путь к папке в которой БД хранит свои данные:

# подключаемся к БД
mysql -uUSER -pPASSWORD

# узнать путь к папке с файлами
SELECT @@datadir;

В результате выполнения запроса получим что-то подобное:

+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+

Для выхода из командной оболочки MySql нужно набрать quit

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

Проверка целостности таблиц MyISAM

Перейдите в папку с нужной БД и выполните команду для проверки таблиц MyISAM на поломку (InnoDB проверяутся сами и не дают запустить демона MySql если с ними что-то не так)

myisamchk *.MYI -s

# -s (молчаливый режим) для подавления ненужной информации

В процессе выполнения эта команда будет отображать информацию о наличии ошибок в таблицах MyISAM БД.

Чиним таблицы MyISAM

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

myisamchk -r -q tbl_name 

# -r -q означает "режим быстрого восстановления"

если не помогло, то

myisamchk -r tbl_name 

# -r означает "режим восстановления"

если не помогло, то

myisamchk --safe-recover tbl_name

В режиме безопасного восстановления используется старый метод восстановления, справляющийся с некоторыми случаями, которые оказываются не под силу для режима обычного исправления (но работает этот метод медленнее)