从许多mysql bin日志文件中恢复数据库

时间:2016-10-18 21:32:21

标签: mysql mysqlbinlog

我有一些MYSQL二进制日志文件以及二进制索引文件(https://dev.mysql.com/doc/refman/5.6/en/point-in-time-recovery.html)。

文件如下:log-bin.000001log-bin.000002log-bin.000003

我还有一个log-bin.index文件,如下所示:

/path/to/mysql-bin-dump-logs/log-bin.000001
/path/to/mysql-bin-dump-logs/log-bin.000002
/path/to/mysql-bin-dump-logs/log-bin.000003

根据文档,使用这些日志文件恢复数据库的方式如下:

mysqlbinlog log-bin.000001 log-bin.000002 log-bin.000003 | mysql -u root -p

在恢复少量文件时这并不是那么糟糕,但从许多文件(例如1000个日志文件)中恢复时会带来很大的不便。

如何在不明确说明每个文件的情况下恢复数据库?

1 个答案:

答案 0 :(得分:0)

定期备份。

您只需将二进制日志重播回备份时的当前日志。

备份工具可以选择记录备份运行时当前的二进制日志文件和位置。例如:

mysqldump --master-data=1 ...

仅使用二进制日志来恢复数据库效率很低,尤其是当您的数据库更改历史记录包含一些更新和删除,alter table,drop table等时。由于二进制日志重放所有更改,甚至那些后来被撤销或删除的人。

如果您使用数据库备份,它只记录当前的数据状态,跳过备份之前所做的所有数百天的更改。

恢复备份速度要快得多,并且不需要您永久保留数千个二进制日志文件。

从字面上回答你的问题 - 如何方便地对1000个文件运行mysqlbinlog-你可以使用findxargs

find . -name 'log-bin.[0-9]*' | sort | xargs mysqlbinlog | mysql -u root -p