簡體   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