Как восстановить базу данных MySQL?

Как восстановить базу данных MySQL?

Существует три основнх варианта восстановления таблиц базы данных MySQL:
Перед выполнением любых операций сделайте бэкап!

  • REPAIR TABLE SQL запрос (MySQL сервер должен быть запущен в момент операции)
  • mysqlcheck консольная утилита (MySQL сервер может быть запущен в момент операции)
  • myisamchk консольная утилита (MySQL сервер должен быть выключен в момент операции, или таблицы должны быть неактивны)

Файлы MySQL базы данных бывают:

  • `tbl_name.frm` - Файл определения MyISAM таблицы (формы) - здесь хранится сама структура таблицы, потеря этого файла критична.
  • `tbl_name.MYD` - Файл данных MyISAM таблицы - здесь хранятся непосредственно данные в чистом виде, потеря этого файла критична.
  • `tbl_name.MYI` - Индексный файл MyISAM таблицы - здесь хранятся табличные индексы индексы, потеря этого файла не критична, при наличии двух предыдущих файлов индексный файл можно восстановить (начиная с версии MySQL 4.0.2, то тут можно воспользоваться REPAIR ... USE_FRM).
  • `tbl_name.TMD` - Временные файлы MyISAM таблицы - их наличие при выключенном сервере свидетельствует об аварийном завершении работы MySQL сервера.
  • `tbl_name.TMM` - Временные файлы MyISAM таблицы - создаются во время оптимизации таблиц MySQL сервера.

Для примера рассмотрим ситуацию:

После некорректного завершения MySQL сервера во время выполнения комманды поломался индексный файл tbl_name.MYI и при попытках обращения к БД мускул выдавал ошибку: Can't find file: 'tbl_name.MYI' (errno: 2).

Чтобы починить табличку MySQL:

1. Останавливаем MySQL сервер!

2. Выполняем команду
C:\mysql\bin\myisamchk.exe -r -q C:\mysql\data\dbname\tbl_name.MYI

======8<======
- check record delete-chain
- recovering (with sort) MyISAM-table 'C:\mysql\data\dbname\tbl_name.MYI'
Data records: 7121379
- Fixing index 1
- Fixing index 2
- Fixing index 3
Data records: 12600790
======>8======

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

3. Выполняем команду
C:\mysql\bin\myisamchk.exe C:\mysql\data\dbname\tbl_name.MYI

======8<======
Checking MyISAM file: C:\mysql\data\dbname\tbl_name.MYI
Data records: 12600790 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check record links
======>8======

Файл БД исправен, ошибок не найдено, все 12600790 записи на месте.

4. Запускаем MySQL сервер!

  • Синтаксис запуска myisamchk: http://www.mysql.ru/docs/man/myisamchk_syntax.html
  • Использование myisamchk для послеаварийного восстановления: http://www.mysql.ru/docs/man/Crash_recovery.html
  • Как ремонтировать таблицы: http://www.mysql.ru/docs/man/Repair.html
  • Repairing Database Corruption in MySQL: http://www.databasejournal.com/features/mysql/article.php/10897_3300511_2/Repairing-Database-Corruption-in-MySQL.htm

2 комментария to “Как восстановить базу данных MySQL?”

  1. 2
    Raphael Marcott Says:

    Привет, меня зовут Лена и я хочу рассказать свою историю. Мне 19 лет. Я красива и не ханжа. Смотря на себя в зеркало я вижу там невысокую девушку блондинку. У меня очень красивое тело, так как я уже 9 лет занимаюсь танцами. Высокая, упругая грудь, плоский животик, упругая попка и длинные, стройные ножки. В одежде я предпочитаю платьица и шортики. Но хватит о внешности. Девственность я потеряла со своим тогдашним парнем в 17 лет. Но было это как то пресно и оргазма я не испытала. У него был небольшой член 14 сантиметров, хотя…

  2. 1
    AES Says:

    Полезная статья по восстановлению таблички мускула…
    А то в рунете ничего толкового не нашел.

Leave a Reply

Статьи