Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике: https://hetmanrecovery.com/ru/recovery_news/restoring-deleted-mysql-database-files.htm
Читайте, как восстановить утерянную или удалённую базу MySQL. Как восстановить повреждённые таблицы базы MySQL с помощью myisamchk. База данных MySQL по умолчанию устанавливается на компьютере в папку не диске С:
C:\Program Files\MySQL\MySQL Server 5.7
Но, данные таблиц хранятся в файлах в другой папке на диске С компьютера, это:
C:\ProgramData\MySQL\MySQL Server 5.7\Data
Расположение данных файлов указано в меню Server Status приложения MySQL Workbench, в разделе Server Directories.
Для случая с необходимостью восстановления таблиц базы данных будет интересна именно папка с данными конкретной базы данных и файлы, которые в ней размещены.
Файлы базы данных MySQL
MySQL совместима с большим количеством форматов файлов, как например: .sql, .arm, .cnf, .dbs, .ddl, .frm, .ibd, .ism, .mrg, .myd, .myi, .mysql, .opt, .phl, .sal, .sqr, .tmd, .arz, .ibz, .ibc, .qbquery, .rul. Но данная статья не об этом. Сегодня нам интересны именно те файлы, в которых хранятся данные и таблицы базы, восстановив которые пользователь будет иметь возможность вернуть важную информацию и избежать её возможной утери в будущем.
Данные каждой базы данных хранятся в папке с её названием, и в зависимости от типа таблицы хранятся в файлах с такими расширениями:
- db.opt – файл в котором хранятся характеристики базы данных, указанные при её создании;
- .frm – файл структуры таблиц;
- .myd – файл, в котором хранятся данные MyISAM таблиц;
- .myi – файл, в котором хранятся индексы MyISAM таблиц;
- .ibd – файл, в котором хранятся данные и индексы InnoDB таблиц.
Как восстановить базу данных MySQL
Восстановление базы данных MySQL это технически не сложный процесс, но он зависит от множества условий. Для пользователей MySQL Workbench предусмотрена функция Экспорта и Импорта/Восстановления данных баз данных.
Кроме этого, возможно создание резервной копии и восстановление базы данных MySQL с помощью mysqldump (которую мы детально описали в одной из наших статей).
Но эти функции больше относятся к созданию резервных копий данных MySQL с помощью встроенных инструментов. Более продвинутым пользователям или тем, которые не воспользовались вовремя функцией резервирования данных базы MySQL, будет также интересен способ создания копий и восстановления данных баз вручную, методом подстановки описанных выше файлов структуры и данных таблиц:
- Создание копии данных таблиц базы MySQL возможно путём копирования файлов структуры и данных (*.opt, *.frm, *.myd, *.myi для MyIsam; *.opt, *.frm, *.ibd для InnoDB) и сохранения их в другой папке.
- Восстановление данных таблиц базы MySQL возможно путём подстановки скопированных раннее файлов структуры и данных в папки уже существующих баз (в нашем случае это две базы: my_db и my_db2).
Восстановление утерянной или удалённой базы MySQL
Так, если по какой-то причине вы удалили базу данных MySQL, переустановили Windows или отформатировали жесткий диск, то восстановить её можно описанным выше способом, путём подставки скопированных раннее файлов базы данных в папку с названием базы:
C:\ProgramData\MySQL\MySQL Server 5.7\Data
Если же пользователем заблаговременно не была создана копия файлов базы данных, то их можно восстановить с помощью Hetman Partition Recovery, после чего перенести в нужную папку описанным выше способом.
Для этого:
- Запустите Hetman Partition Recovery и просканируйте с его помощью диск на котором хранилась база данных MySQL
- Найдите и перейдите с помощью программы в папку C:\ProgramData\MySQL\MySQL Server 5.7\Data,
или осуществите поиск необходимых файлов базы данных с помощью функции поиска:
Обратите внимание: файлы с данными и форматами таблиц будут иметь название таблицы, а не базы данных.
- Восстановите файлы базы данных
- Перенесите их в папку с названием базы данных.
- Запустив после этого MySQL Workbench, помещённые в папку базы восстановленные файлы таблиц будут доступны.
Таким же способом можно восстанавливать утерянные файла дампа (*.sql) или его архив (*.zip, *.gzip, *.bzip2).
Восстановление повреждённых таблиц базы MySQL с помощью myisamchk
MyISAM таблицы базы данных MySQL могут быть повреждены в результате неожиданного прерывания процесса записи или отключения компьютера, сбоев и отказов в работе аппаратного или программного обеспечения, а также в случае попытки отладки с помощью myisamchk используемой сервером таблицы.
В результате повреждения из таблицы могут исчезнуть или неправильно отображаться данные, но чаще всего в результате повреждения таблицы пользователи сталкиваются с ошибкой: «Incorrect key file for table: ‘название_таблицы’. Try to repair it»
Для восстановления повреждённых MyISAM таблиц можно использовать команду myisamchk.
Myisamchk работает путём отладки и создания копии .myd файла, с дальнейшей заменой им повреждённого файла. Поэтому, прежде чем использовать данную команду, лучше предварительно создать резервную копию файла таблицы, которую необходимо восстановить.
Так, чтобы восстановить повреждённую таблицу, используйте команду:
myisamchk -r -q ИМЯ_ТАБЛИЦЫ
где, -r -q – это режим быстрого восстановления. В данном случае будет исправлен индексный файл без изменения файла данных. Если в файле данных содержится все необходимое, а удаленные связи указывают на правильные позиции в файле данных, то в результате данной команды таблица будет исправлена.
Если предыдущая команда не даст необходимого результата, то сделайте резервную копию файла данных и выполните команду:
myisamchk -r ИМЯ_ТАБЛИЦЫ
где, -r – это просто режим восстановления. В таком случае из файла данных будут удалены некорректные и утерянные записи, и индексный файл будет создан заново (как описано выше).
Обратите внимание. Если отладку и восстановление таблицы планируется выполнять из командной строки, то предварительно необходимо остановить сервер. Следует отметить, что при выполнении mysqladmin shutdown с удаленного сервера mysqld все еще будет некоторое время работать после завершения mysqladmin, пока не будут остановлены все запросы и сброшены на диск все ключи.
Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике: https://hetmanrecovery.com/ru/recovery_news/restoring-deleted-mysql-database-files.htm