更新日志(5.1+ 由二進制日志替代)記錄所有修改數據的 SQL,是備份點後數據恢復的關鍵。
mysqld --log-update=file_name
# 文件寫入數據目錄,名為 file_name.#,# 每次 flush-logs/refresh/重啟遞增
# 不指定 file_name 時默認用主機名
WHERE 不匹配的 UPDATE/DELETE、值不變的 UPDATE 均不記錄。flush-logs 會**截斷文件**而非切換新文件,慎用。mysqladmin refreshmysqladmin flush-logsFLUSH LOGS SQL# 全量恢復所有庫
mysql < update.log.001
# 僅恢復指定庫(過濾其他庫語句)
mysql --one-database db_name < update.log.001
# 批量按時間順序恢復(關鍵:-tr 保證順序)
ls -tr update.* | xargs cat | mysql --one-database db_name
DROP DATABASE 後,恢復前**手動刪除日志中該語句**,避免再次破壞。ls -tr),**嚴禁手動修改日志文件時間戳**,否則恢復順序錯亂導致數據不一致。-t -r:ls -l update.* | xargs cat | ...