0

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

文件如下所示:log-bin.000001, log-bin.000002, log-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 个日志文件)中恢复时会带来很大的不便。

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

4

1 回答 1

0

定期进行备份。

您只需将二进制日志重放回您进行备份时的最新日志。

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

mysqldump --master-data=1 ...

仅使用二进制日志来恢复数据库效率低下,特别是如果您的数据库更改历史记录包括一些更新和删除、更改表、删除表等。因为二进制日志会重放所有更改,即使是那些后来被撤销或删除的更改。

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

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


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

find . -name 'log-bin.[0-9]*' | sort | xargs mysqlbinlog | mysql -u root -p
于 2016-10-18T21:37:40.370 回答