MySQL主從不一致?DBA急救手冊:14種高頻坑點+3分鐘定位+無損修復!

MySQL「主從不一致」最常見的成因、快速定位思路以及可落地的修復手段

一、為什么會不一致?14 類高頻場景

類別典型表現/觸發條件快速自檢命令/日志
1. 從庫被寫入業務或 DBA 直連從庫 UPDATE/INSERTSHOW VARIABLES LIKE 'read_only' 應為 ON
2. 復制過濾規則主從 binlog-ignore-db / replicate-do-table 不一致比對 my.cnf 過濾規則
3. 非 ROW 格式STATEMENTUUID()NOW() 等不確定函數SHOW VARIABLES LIKE 'binlog_format'
4. 異常宕機主庫 crash 瞬間事務未落盤;從庫 relay-log 損壞錯誤日志出現 Relay log read failure
5. 從庫斷電relay log 截斷 → SQL 線程報錯 1594SHOW SLAVE STATUSLast_Errno=1594
6. 網絡丟包I/O 線程反復重連,少拉日志Slave_IO_Running=NoLast_IO_Error 提示網絡
7. 主從版本差異高版本主庫語法在低版本從庫不支持比對 SELECT VERSION()
8. sql_mode 不一致嚴格模式主庫插入成功,從庫失敗SHOW VARIABLES LIKE 'sql_mode'
9. server-id 沖突環形/鏈式復制時事件被循環過濾SHOW VARIABLES LIKE 'server_id'
10. 自增步長問題雙主/多主寫入產生重復 PKauto_increment_increment ≠1
11. 大事務+延遲從庫落后幾小時,業務已刪除主庫數據Seconds_Behind_Master 持續增大
12. 備份恢復方式錯誤mysqldump 未加 --single-transaction --master-data=2檢查備份腳本
13. 存儲過程/觸發器從庫缺少對應 routine 或觸發器行為不同SHOW PROCEDURE STATUS
14. MySQL Bug8.0.27 之前函數索引、JSON 查詢觸發 assertbugs.mysql.com + assert 文件名

二、快速定位三步走(5 分鐘)

2.1. 看狀態

SHOW SLAVE STATUS\G

關注 4 個核心字段:
Slave_IO_Running | Slave_SQL_Running | Last_Error | Seconds_Behind_Master

2.2. 看日志

tail -n 200 /var/log/mysqld.log | grep -E "Error|Assert|1032|1062|1594"

1032=記錄不存在,1062=主鍵沖突,1594=relay-log 損壞

2.3. pt-table-checksum(可選)

不會可以這個工具評論區告訴我

pt-table-checksum \
--no-check-binlog-format \
--nocheck-replication-filters \
--replicate=ptdb.checksums \
--databases=wewindb \
--tables=test1 \
--recursion-method=dsn=D=ptdb,t=dsns \
h=10.20.17.101,u=root,p=root,P=3306

不一致的表會在 percona.checksums 中生成 diff 記錄。

三、修復方案選擇矩陣

場景推薦方案停機需求速度備注
僅個別表/少量行pt-table-sync0分鐘級checksumsync
單表大量不一致重建該表低(可在線導出)10~30 minmysqldump --single-transaction + source
多表/整庫錯亂重做從庫xtrabackup 流式重建最穩
relay-log 損壞自動恢復0秒級STOP SLAVE; SET GLOBAL relay_log_recovery=1; START SLAVE;
1032/1062 報錯跳過或補數據0秒級SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 僅應急

說明:
MySQL 8.0.22 開始,使用 STOP REPLICA 來代替 STOP SLAVE,后者現在已被棄用。 在 MySQL 8.0.22 之前的版本中,請使用 STOP SLAVE。

四、預防措施(生產必做)

4.1. 從庫只讀

read_only=1
super_read_only=1   # 8.0+

4.2. 復制信息落表

master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=1

4.3. 格式與一致性

binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON

4.4. 定期校驗

每月低峰期跑 pt-table-checksum,差異寫入報警。

4.5. 版本策略

主從同版本 ≥ 8.0.35,避免 8.0.27 之前已知 assert 觸發場景(函數索引、JSON MEMBER OF)。

五、結論

出現主從不一致,先讀 SHOW SLAVE STATUS 和錯誤日志 → 用 pt-table-checksum 檢查 → 能用 pt-table-sync 就不同步整庫;如果修復不了主從不一致,那重做吧, xtrabackup或者mysqldump 重做從庫。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96303.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI 網站源碼:探秘 SUNO,革新音樂創作的 AI 先鋒

在當今數字化浪潮中,人工智能(AI)正深刻地重塑各個領域,音樂創作也不例外。SUNO 作為一款引領潮流的音樂生成工具,宛如一顆璀璨新星,在音樂創作的天空中熠熠生輝,為音樂愛好者和創作者們帶來了前…

Linux:malloc背后的實現細節

目錄前言一、先搞懂基礎:程序的內存布局(關鍵前提!)二、malloc的核心實現步驟(4層架構拆解)第1層:用戶調用 → 標準庫處理(glibc的malloc.c)第2層:堆內存池管…

什么是X11轉發?

X11 轉發(X11 forwarding,ssh -X)是一種 SSH 協議功能,它允許用戶在遠程服務器上運行圖形化應用程序,并通過本地的顯示設備和輸入輸出設備與這些程序進行交互。它被開發者廣泛使用,用于在大規模、異構的服務…

Android Kotlin 動態注冊 Broadcast 的完整封裝方案

在 Kotlin 中封裝動態注冊的 Broadcast 可以讓你更優雅地管理廣播的注冊和注銷,避免內存泄漏。下面是一個完整的封裝方案: 基礎封裝類 import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import …

VGG改進(8):融合Self-Attention的CNN架構

1. 自注意力機制簡介自注意力機制是Transformer架構的核心組件,它能夠計算輸入序列中每個元素與其他所有元素的相關性。與CNN的局部感受野不同,自注意力機制允許模型直接建立遠距離依賴關系,從而捕獲全局上下文信息。在計算機視覺中&#xff…

ES6 面試題及詳細答案 80題 (33-40)-- Symbol與集合數據結構

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

PG-210-HI 山洪預警系統呼叫端:筑牢山區應急預警 “安全防線”

在山洪災害多發的山區,及時、準確的預警信息傳遞是保障群眾生命財產安全的關鍵。由 PG-210-HI 型號構成的山洪預警系統呼叫端主機,憑借其全面的功能、先進的特性與可靠的性能,成為連接管理員與群眾的重要應急樞紐,為山區構建起一道…

研學旅游產品設計實訓室:賦能產品落地,培養實用人才

1. 研學旅游產品設計實訓室的定位與功能 研學旅游產品設計實訓室是專門為學生提供研學課程與產品開發、模擬設計、項目推演、成果展示等實踐活動的教學空間。該實訓室應支持以下功能: 研學主題設計與目標制定; 課程內容與學習方法的選擇與整合&#xf…

4215kg輕型載貨汽車變速器設計cad+設計說明書

第一章 前言 3 1.1 變速器的發展環繞現狀 3 1.2 本次設計目的和意義 4 第二章 傳動機構布置方案分析及設計 5 2.1 傳動機構結構分析與類型選擇 5 2.2變速器主傳動方案的選擇 5 2.3 倒檔傳動方案 6 2..4 變速器零、部件結構方案設計 6 2.4.1 齒輪形式 …

9月10日

TCP客戶端代碼#include<myhead.h> #define SER_IP "192.168.108.179" //服務器&#xff49;&#xff50;地址 #define SER_PORT 8888 //服務器端口號 #define CLI_IP "192.168.108.239" //客戶端&#xff49;&#xff50;地址 …

案例開發 - 日程管理 - 第七期

項目改造&#xff0c;進入 demo-schedule 項目中&#xff0c;下載 pinia 依賴在 main.js 中開啟 piniaimport { createApp } from vue import App from ./App.vue import router from ./router/router.js import {createPinia} from pinialet pinia createPinia() const app …

infinityfree 網頁連接內網穿透 localtunnel會換 還是用frp成功了

模型庫首頁 魔搭社區 fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. 我嘗試用本機ipv6&#xff0c;失敗了 配置文件 - ChmlFrp 香港2才能用 只支持https CNAME解析 | 怊貓科技 | 文檔 How to create …

批量更新數據:Mybatis update foreach 和 update case when 寫法及比較

在平常的開發工作中&#xff0c;我們經常需要批量更新數據&#xff0c;業務需要每次批量更新幾千條數據&#xff0c;采用 update foreach 寫法的時候&#xff0c;接口響應 10s 左右&#xff0c;優化后&#xff0c;采用 update ... case when 寫法&#xff0c;接口響應 2s 左右。…

Java基礎篇04:數組、二維數組

1 數組 數組是一個數據容器&#xff0c;可用來存儲一批同類型的數據。 1.1 數組的定義方式 靜態初始化 數據類型[][] 數組名 {元素1&#xff0c;元素2&#xff0c;元素3}; string[][] name {"wfs","jsc","qf"} 動態初始化 數據類型[][] 數組名…

unity開發類似個人網站空間

可以用 Unity 開發 “個人網站空間” 類工具&#xff0c;但需要結合其技術特性和適用場景來判斷是否合適。以下從技術可行性、優勢、局限性、適用場景四個方面具體分析&#xff1a;一、技術可行性Unity 本質是游戲引擎&#xff0c;但具備開發 “桌面應用” 和 “交互內容” 的能…

SDK游戲盾如何實現動態加密

SDK游戲盾的動態加密體系通過??密鑰動態管理、多層加密架構、協議混淆、AI自適應調整及設備綁定??等多重機制協同作用&#xff0c;實現對游戲數據全生命周期的動態保護&#xff0c;有效抵御中間人攻擊、協議破解、重放攻擊等威脅。以下從核心技術與實現邏輯展開詳細說明&am…

TensorFlow平臺介紹

什么是 TensorFlow&#xff1f; TensorFlow 是一個由 Google Brain 團隊 開發并維護的 開源、端到端機器學習平臺。它的核心是一個強大的數值計算庫&#xff0c;特別擅長于使用數據流圖來表達復雜的計算任務&#xff0c;尤其適合大規模機器學習和深度學習模型的構建、訓練和部署…

TENGJUN防水TYPE-C連接器:立貼結構與IPX7防護的精密融合

在戶外電子、智能家居、車載設備等對連接可靠性與空間適配性要求嚴苛的場景中&#xff0c;連接器不僅是信號與電力傳輸的“橋梁”&#xff0c;更需抵御潮濕、粉塵等復雜環境的侵蝕。TENGJUN防水TYPE-C連接器以“雙排立貼”為核心設計&#xff0c;融合鋅合金底座、精準尺寸控制與…

Spring Boot + Vue 項目中使用 Redis 分布式鎖案例

加鎖使用命令&#xff1a;set lock_key unique_value NX PX 1000NX:等同于SETNX &#xff0c;只有鍵不存在時才能設置成功PX&#xff1a;設置鍵的過期時間為10秒unique_value&#xff1a;一個必須是唯一的隨機值&#xff08;UUID&#xff09;&#xff0c;通常由客戶端生成…

微信小程序攜帶token跳轉h5, h5再返回微信小程序

需求: 在微信小程序內跳轉到h5, 瀏覽完后點擊返回按鈕再返回到微信小程序中 微信小程序跳轉h5: 微信小程序跳轉h5,這個還是比較簡單的, 但要注意細節 一、微信小程序代碼 1.新建跳轉h5頁面, 新建文件夾,新建page即可 2.使用web-view標簽 wxml頁面 js頁面 到此為止, 小程序…