[英]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.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個日志文件)中恢復時,則帶來了很大的不便。
如何在不明確說明每個文件的情況下恢復數據庫?
定期進行備份。
您只需要將二進制日志重播到進行備份時的最新日志即可。
備份工具具有一個選項,可以記錄運行備份時當前的二進制日志文件和位置。 例如:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.