小量的資料庫我們可以每天進行完整備份,因為這也用不了多少時間,但當資料庫很大時,我們就不太可能每天進行一次完整備份了,而且改成每周一次完整備份,每天一次增量備份類似這樣的備份策略。增量備份的原理就是使用了mysql的二進位日誌,所以我們必須啟用二進位日誌功能。
一、增量備份
1、比如我們在星期天下午11點做一次完整備份:
mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > fullbackup_sunday_11_PM.sql
在sql檔案中我們會看到兩行:
– Position to start replication or point-in-time recovery from
– CHANGE MASTER TO MASTER_LOG_FILE=’bin-log.000002′, MASTER_LOG_POS=107;
第二行包含了我們需要的資訊,是指備份後所有的更改將會儲存到bin-log.000002二進位檔案中。
2、然後在星期一下午11點我們來做一次增量備份:
mysqladmin flush-logs
這時將會產生一個新的二進位記錄檔bin-log.000003,bin-log.000002則儲存了自星期天下午11點到現在的所有更改,我們只需要把這個檔案備份到安全的地方就行了。然後星期二我們又做增量備份,還是執行同樣的命令,這時我們儲存bin-log.000003檔案。
二、恢複備份
比如星期三中午12點出現了故障,這時需要恢複,我們首先匯入星期天的完整備份:
mysql < fullbackup_sunday_3_AM.sql
接著我們匯入星期一和星期二的增量備份:
mysqlbinlog bin-log.000002 bin-log.000003 mysql
這時我們已經恢複了所有備份資料,我們還可以找到bin-log.000004,進一步恢複最新的資料。