繁体   English   中英

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

[英]Recover database from many mysql bin log files

我有一些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个日志文件)中恢复时,则带来了很大的不便。

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

定期进行备份。

您只需要将二进制日志重播到进行备份时的最新日志即可。

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

mysqldump --master-data=1 ...

仅使用二进制日志来恢复数据库效率不高,尤其是在数据库更改的历史记录包括某些更新和删除,alter table,drop table等的情况下。因为二进制日志会重放所有更改,即使后来被撤消或删除的更改也是如此。

如果使用数据库备份,它将仅记录数据的当前状态,而跳过备份之前进行的所有数百天的更改。

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


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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM