我有一些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个日志文件)中恢复时会带来很大的不便。
如何在不明确说明每个文件的情况下恢复数据库?
答案 0 :(得分:0)
定期备份。
您只需将二进制日志重播回备份时的当前日志。
备份工具可以选择记录备份运行时当前的二进制日志文件和位置。例如:
mysqldump --master-data=1 ...
仅使用二进制日志来恢复数据库效率很低,尤其是当您的数据库更改历史记录包含一些更新和删除,alter table,drop table等时。由于二进制日志重放所有更改,甚至那些后来被撤销或删除的人。
如果您使用数据库备份,它只记录当前的数据状态,跳过备份之前所做的所有数百天的更改。
恢复备份速度要快得多,并且不需要您永久保留数千个二进制日志文件。
从字面上回答你的问题 - 如何方便地对1000个文件运行mysqlbinlog-你可以使用find
和xargs
:
find . -name 'log-bin.[0-9]*' | sort | xargs mysqlbinlog | mysql -u root -p