Как восстановить базу данных 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
Ноябрь 16th, 2010 at 06:00
Привет, меня зовут Лена и я хочу рассказать свою историю. Мне 19 лет. Я красива и не ханжа. Смотря на себя в зеркало я вижу там невысокую девушку блондинку. У меня очень красивое тело, так как я уже 9 лет занимаюсь танцами. Высокая, упругая грудь, плоский животик, упругая попка и длинные, стройные ножки. В одежде я предпочитаю платьица и шортики. Но хватит о внешности. Девственность я потеряла со своим тогдашним парнем в 17 лет. Но было это как то пресно и оргазма я не испытала. У него был небольшой член 14 сантиметров, хотя…
Май 15th, 2010 at 19:28
Полезная статья по восстановлению таблички мускула…
А то в рунете ничего толкового не нашел.