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

MySQL 主從複寫報錯急救單行指令:SQL_SLAVE_SKIP_COUNTER 跳過錯誤事務

     編輯:MySQL 資料庫相關知識

故障現象

從庫複寫中斷,SHOW SLAVE STATUS\G 顯示 Last_SQL_Error,需跳過有問題的事務恢復複寫。

標準急救四步驟

-- 1. 確認主從狀態
SHOW MASTER STATUS;
SHOW SLAVE STATUS\G

-- 2. 停止 SQL 線程
STOP SLAVE;

-- 3. 跳過 1 個事務(可改為 N)
SET GLOBAL sql_slave_skip_counter = 1;

-- 4. 重啟複寫
START SLAVE;

適用場景與風險

適用不適用/高風險
單一 DML 錯誤(鍵衝突、欄位缺失)DDL 錯誤(結構不一致)
非關鍵業務表、可接受資料不一致核心業務表(訂單、帳戶、庫存)
臨時繞過,後續人工補償大量連續錯誤(需根因分析,非暴力跳過)

事後必做:資料一致性校驗

# Percona Toolkit
pt-table-checksum --replicate=percona.checksums h=master,u=user,p=pass
pt-table-sync --replicate=percona.checksums --sync-to-master h=slave,u=user,p=pass

根因排查清單

  1. 主庫寫入是否繞過複寫過濾 (binlog_do_db/replicate_*)
  2. 從庫是否有獨立寫入(未設 read_only=ON/super_read_only=ON)
  3. 字符集/排序規則不一致導致唯一鍵衝突
  4. 版本差異導致語法/函數行為不同
  5. 網路抖動造成事務部分應用

現代最佳實踐:GTID + 自動容錯

  • MySQL 5.6+ 啟用 GTID_MODE=ON,複寫按事務 ID 定位,跳過更精準
  • MASTER_AUTO_POSITION=1 自動尋找同步點
  • 配合 slave_skip_errors(謹慎使用)或 slave_exec_mode=IDEMPOTENT(冪等模式)
  • 生產環境**強制從庫 super_read_only=ON**,根除誤寫
跳過錯誤是止痛藥,不是治本藥。必須在業務低峰完成一致性修復,並修正根因防止復發。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved