前置條件:必須開啟 Binlog
LOCK TABLES number READ;
2. 解析全量備份中的同步座標
3. 刷新 Binlog 確定增量文件
cp /usr/local/mysql/log/mysql-bin.000002 /tmp/
mysqlbinlog /tmp/mysql-bin.000002 > /tmp/binlog.sql
vim /tmp/binlog.sql
# 找到並刪除:DELETE FROM `number`; 及其後的 COMMIT
5. 恢復執行
UNLOCK TABLES;
SELECT * FROM number;
-- 應包含:基線 10 + 增量 10 + 誤操作後新增 10 = 30 條
生產級 PITR (Point-In-Time Recovery) 標準流程
關鍵工具參數速查
| 參數 | 作用 | 示例 |
--start-datetime | 起始時間點 | "2024-01-15 14:00:00" |
--stop-datetime | 截止時間點 | "2024-01-15 14:30:00" |
--start-position | 起始 Position | 107 |
--stop-position | 截止 Position | 12345 |
--database | 僅解析指定庫 | backup |
避坑與最佳實踐
- 備份驗證:定期演練恢復,確保備份文件可用
- Binlog 保留:
expire_logs_days=7 以上,重要系統建議 30 天
- GTID 模式:5.6+ 啟用
gtid_mode=ON,恢復時用 --include-gtids 更精準
- 延遲從庫:部署 1 小時延遲從庫(
MASTER_DELAY=3600),誤操作秒級恢復
- 權限隔離:生產庫禁止 DROP/TRUNCATE 權限給應用賬號,走變更平台審批