大型數據庫無法每日全量備份,「週全量 + 日增量」是經典折中方案。MySQL 二進制日志記錄所有數據變更,是增量備份與時間點恢復的核心基礎。
啟用二進制日志:my.cnf 中設置 log-bin=mysql-bin 並重啟服務。
mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > fullbackup_sunday.sql
關鍵參數:
--flush-logs:切換新 binlog 文件,確保備份後變更記錄在新文件。--master-data=2:在輸出中以註釋形式記錄當前 binlog 文件名與位置(如 CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;)。mysqladmin flush-logs
執行後產生新 binlog(如 bin-log.000003),上一個文件(bin-log.000002)即包含自上次全量/增量以來的所有變更,直接複製該文件至備份存儲即可。
假設週三中午故障,恢復步驟:
mysql < fullbackup_sunday.sqlmysqlbinlog bin-log.000002 bin-log.000003 | mysqlbin-log.000004),繼續重放以逼近故障點。mysqlbinlog 支援 --start-position、--stop-position 精確截取區間。