MySQL是目前廣泛應(yīng)用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了一種機(jī)制來記錄數(shù)據(jù)庫中的所有更改操作,這個機(jī)制就是二進(jìn)制日志。
二進(jìn)制日志是MySQL對數(shù)據(jù)庫的修改進(jìn)行記錄的文件,每次對數(shù)據(jù)庫進(jìn)行修改操作時,都會在二進(jìn)制日志中記錄下來這次修改的所有細(xì)節(jié),這樣就可以通過這些日志恢復(fù)數(shù)據(jù)。
在MySQL中,可以通過以下方式來開啟二進(jìn)制日志:
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL log_bin = 'ON';
當(dāng)數(shù)據(jù)丟失或者損壞時,可以通過以下步驟來使用二進(jìn)制日志恢復(fù)數(shù)據(jù):
- 找到最后一個正常備份數(shù)據(jù)的時間點(diǎn),并將備份數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中。
- 查找損壞數(shù)據(jù)后,最后一次正常提交的二進(jìn)制日志文件名和位置。
- 使用mysqlbinlog工具將從第二步中找到的二進(jìn)制日志文件名的日志內(nèi)容保存到一個文件中。
- 將第三步保存的日志內(nèi)容重新導(dǎo)入到數(shù)據(jù)庫中進(jìn)行恢復(fù)。
mysqlbinlog mysql-bin.000001 > /tmp/binlog.sql
mysql < /tmp/binlog.sql
這樣就可以通過二進(jìn)制日志來恢復(fù)數(shù)據(jù)了。