首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 誤操作數據恢復實戰:全量 + 增量 Binlog 完整演練

     編輯:MySQL 資料庫相關知識

核心前提

  • 必須開啟 Binlog(log_bin),並設置 binlog_format=ROW 最佳。
  • 定期全量備份(mysqldump --master-data=2 -F 刷新 Binlog)。
  • 保留全量備份後的所有 Binlog 文件。

演練場景還原

  1. 建庫建表寫入初始 10 行(時間 T1)。
  2. 全量備份:
    mysqldump -uroot -p -F --master-data=2 backup | gzip > backup_$(date +%F).sql.gz
    -F 刷新 Binlog,--master-data=2 記錄 Binlog 位點。
  3. 寫入增量 10 行(時間 T2,Binlog 為 mysql-bin.000002)。
  4. 增量備份:保留 mysql-bin.000002 及後續 Binlog。
  5. 誤操作:DELETE FROM number; 清空表。
  6. 誤操作後再寫入 10 行(時間 T3,Binlog mysql-bin.000003)。

恢復步驟

  1. 加表級讀鎖:LOCK TABLE number READ; 防止恢復期間新寫入。
  2. 導入全量備份:
    gzip -d backup_2016-06-29.sql.gz
    mysql -uroot -p backup < backup_2016-06-29.sql
  3. 提取增量 Binlog 並去除誤操作:
    mysqlbinlog mysql-bin.000002 > bin.sql
    編輯 bin.sql,刪除 DELETE FROM number; 語句。
  4. 重放清洗後增量:
    mysql -uroot -p backup < bin.sql
  5. 驗證:查詢表應恢復至 30 行(T1+T2+T3),誤刪操作已消除。

關鍵技巧

  • mysqldump -F 自動刷新 Binlog,使全量備份位點與增量無縫銜接。
  • mysqlbinlog 導出 SQL 便於人工刪除誤操作語句。
  • 恢復期間務必加鎖,避免新數據干擾。

總結

「全量備份 + Binlog 增量 + 人工清洗誤操作」是 MySQL 誤刪/誤更新數據恢復的標準範式,前提是平時已做好 Binlog 開啟與定期備份。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved