Восстановление данных с поврежденной или случайно удаленной MySQL таблицы |
[исправить] |
Для восстановления случайно удаленной таблицы можно использовать для резервного копирования пакет
Zmanda Recovery Manager (http://mysqlbackup.zmanda.com/), имеющий поддержку восстановления
недостающей в бэкапе информации из бинарного лога изменений (MySQL binary log).
Ведение лога транзакций включается в секции "[mysqld]" файла конфигурации:
log-bin = /var/log/mysql/bin.log
Определяем время удаления (DROP TABLE):
mysql-zrm --action parse-binlogs --source-directory=/var/lib/mysql /sugarcrm/20060915101613
/var/lib/mysql/my-bin.000015 | 11013 | 06-09-12 06:20:03 | Xid = 4413 | COMMIT;
/var/lib/mysql/my-bin.000015 | 11159 | 06-09-12 06:20:03 | Query | DROP TABLE IF EXISTS `accounts`;
Имея инкрементальный бэкап binary log от 15 сентября, восстанавливаем из него
данные, пропуская удаление таблицы:
# mysql-zrm --action restore --backup-set sugarcrm \
--source-directory=/var/lib/mysql/ sugarcrm/20060915101613/ \
--stop-position 11014
# mysql-zrm --action restore --backup-set sugarcrm \
--source-directory=/var/lib/mysql/ sugarcrm/20060915101613/ \
--start-position 11160
Для получения данных из binary log также можно использовать стандартную программу mysqlbinlog.
Предположим, что у нас есть бэкап от 5 мая.
Переводим сервер в изолированный режим работы:
mysqld --socket=/tmp/mysql_restore.sock --skip-networking
Восстанавливаем данные из бэкапа:
cat /backup/20080505.sql | mysql --socket=/tmp/mysql_restore.sock
Делаем дамп данных из бинарного лога:
mysqlbinlog /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
Можно использовать выборку по дате или номеру позиции:
mysqlbinlog --stop-date="2008-05-06 9:59:59" --start-date="2008-05-05 10:01:00" \
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
mysqlbinlog --stop-position="5647324" --start-position="5634521" \
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
Вручную удаляем лишнее и загружаем недостающие данные:
cat /tmp/mysql_restore.sql| mysql --socket=/tmp/mysql_restore.sock
|
|
|
|
Раздел: Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL |