mysql 的主從機制是怎么實現的?

MySQL 作為當前最流行的開源關系型數據庫之一,為了滿足數據的高可用、負載均衡和容災備份等需求,廣泛應用主從復制(Replication)機制。其核心思想是:在一臺主庫(Master)上發生的所有數據變更都會同步到一臺或多臺從庫(Slave),從而實現多節點間的數據一致性和系統的讀寫分離。

很多初學者疑惑,MySQL 的主從機制究竟是怎樣實現的?有哪些關鍵組件與執行流程?本文將為你系統梳理 MySQL 主從復制的原理、步驟和注意事項,幫助你徹底搞懂這一關鍵技術點。


一、主從復制的基本原理

MySQL 的主從復制本質上是 “主庫記錄變更,從庫重放變更”。主庫以二進制日志(binlog)的形式記錄所有數據更改操作(如INSERT、UPDATE、DELETE等),從庫則實時同步并執行這些變更,保持數據與主庫一致。

目前主流 MySQL 復制方式有三種:

  1. 基于語句的復制(Statement-Based Replication, SBR)
    記錄 SQL 語句本身,傳遞給從庫執行。

  2. 基于行的復制(Row-Based Replication, RBR)
    記錄具體哪條記錄被修改,修改了哪些內容。

  3. 混合模式復制(Mixed-Based Replication, MBR)
    SBR 和 RBR 混合,自動選擇更合適的模式。


二、主從復制的三大核心線程

MySQL 主從復制通常涉及三類核心線程:

1. 主庫的 Binlog Dump 線程

  • 負責將主庫 binlog 內容推送給每一個已連的從庫。

2. 從庫的 IO 線程

  • 連接主庫,持續拉取主庫 binlog,并將其寫入本地的中繼日志(relay log)。

3. 從庫的 SQL 線程

  • 讀取 relay log 日志,解析出 SQL 或數據變化實際應用到本地數據庫。

三、主從復制的執行流程

讓我們以常見的異步復制模式為例,詳細分解 MySQL 主從復制的具體工作流程:

1. 主庫開啟 binlog 日志

主庫配置參數:

[mysqld]
server-id=1
log-bin=mysql-bin

log-bin 打開后,寫操作都會記錄在 binlog 日志文件中。

2. 從庫連接主庫,指定復制位點

從庫需配置唯一的 server-id 并通過如下命令授權登錄:

CHANGE MASTER TOMASTER_HOST='master_ip',MASTER_USER='rep_user',MASTER_PASSWORD='rep_pass',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=XXXXX;

這里的 MASTER_LOG_FILEMASTER_LOG_POS 決定了從哪個 binlog 文件、哪個位置開始同步。

3. 啟動從庫的 IO 線程

  • IO 線程連到主庫,啟動時會告知 binlog 的位置
  • 主庫的 Binlog Dump 線程讀取指定 binlog 內容,并實時推送到從庫
  • 從庫收到 binlog 片段后,寫入本地的 relay log 文件

4. 啟動從庫的 SQL 線程

  • SQL 線程實時讀取 relay log,將記錄的 binlog 變更內容分析為 SQL 語句或數據行變更
  • 在從庫數據庫中重放這些操作,還原原始數據變更

5. 持續循環,實時同步

  • 主從之間保持長連接,持續同步主庫新生成的 binlog 文件
  • 這種機制可以實現準實時的數據同步

四、主從復制的類型

目前 MySQL 支持三種復制類型:

  1. 異步復制(Asynchronous Replication):
    主庫執行完事務后即返回,后續 binlog異步同步到從庫。有數據延遲風險但性能最佳。

  2. 半同步復制(Semi-synchronous Replication):
    主庫在至少一個從庫收到該事務 binlog 后才返回提交結果,延遲更小,數據更可靠。

  3. 全同步復制(Group Replication):
    主要用在 MySQL Group Replication / InnoDB Cluster,全員一致數據同步,寫延遲大,但最安全。


五、主從復制的部署場景和優勢

  • 讀寫分離
    將寫操作集中到主庫,讀操作分布到多個從庫,極大提升系統讀能力。

  • 容災備份
    主庫故障時可用從庫頂替,提升系統可用性與可靠性。

  • 數據分析后臺
    業務分析、報表可在從庫執行,避免影響線上主庫性能。


六、主從復制的常見問題與注意事項

  1. 主從延遲
    網絡、從庫負載大或大事務都可能導致數據同步延遲。

  2. 主從不一致
    嚴格用主鍵做增刪避免自增ID沖突,不要讓主從有差異化業務操作。

  3. 權限與安全
    復制用戶需謹慎最小權限管理,生產環境確保傳輸通道安全。

  4. 監控與故障自動切換
    可以配合 MHA、Keepalived 等實現主從間的自動故障轉移。

  5. 數據初始同步
    新從庫加入需先基于某一時刻主庫快照 + 日志位點加載初始化數據。


七、主從復制架構的常見拓撲

  • 一主多從:最常見,主庫1個,從庫N個。
  • 多級復制(級聯復制):便于擴展,但可能帶來更長同步鏈路延遲。
  • MGR/多主復制:高可用、沖突解決復雜,適合業務有特別需求。

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

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

相關文章

【PHP 函數從入門到精通】

🧠 PHP 函數從入門到精通 PHP 函數是編程中最基礎、也是最強大的工具之一。它不僅可以簡化代碼、提高復用性,還能通過各種高級用法,讓你寫出更靈活、更現代的代碼。 下面我們從函數的基礎講起,逐步深入,帶你掌握函數的…

CGA老年綜合評估漢密爾頓抑郁量表與認知評估聯用

一、CGA老年綜合評估漢密爾頓抑郁量表與認知評估聯用的基礎CGA老年綜合評估 (一)二者評估內容的互補性 CGA老年綜合評估漢密爾頓抑郁量表主要聚焦于老年人的抑郁情緒及相關癥狀,而認知評估則著重考察老年人的記憶力、注意力、思維能力等認知…

教培機構如何開發自己的證件照拍照采集小程序

職業教培機構對學員的證件照采集是進行學生培訓管理、考試報名、證書發放的前置工作,傳統拍照和收集證件照的方式往往面臨效率低、質量參差不齊等問題。開發一款專屬的證件照拍照采集小程序,不僅能提升機構形象,還能大幅優化工作流程。借助“…

GC8872刷式直流電機驅動器詳解:3.6A驅動能力與PWM控制

概述GC8872是一款具有故障報告功能的刷式直流電機驅動芯片,專為打印機、電器、工業設備等機電一體化應用設計。這款芯片采用ESOP8封裝,集成了H橋驅動電路和多種保護功能,支持高達3.6A的峰值電流輸出。關鍵特性寬電壓工作范圍:6.5V…

從0開始學習R語言--Day54--雙重固定模型

對于具有空間差異的數據,如果不知道數據的特征關系或意義,直接用杜賓模型來處理是一個比較通用的思路,只是后續還需要很多檢驗去證明結果的可解釋性和統計性。但如果我們已經知道特征的意義,比如企業經濟發展的數據中有著員工的科…

三生篩法在計算數論中的極限是什么?

AI輔助創作:三生篩法在計算數論中的極限主要體現在?規模邊界?、?算法適應性?及?理論兼容性?三個維度,其核心瓶頸與突破路徑如下:一、規模邊界:計算效率的斷崖式衰減??低維高效區的上限?在 10^15 以內數域,三生…

iOS WebView 加載失敗與緩存刷新問題排查實戰指南

在移動 App 中嵌入網頁后,不少團隊都會遇到一個詭異的問題:用戶看到的是“舊內容”,或“資源加載失敗”,但在瀏覽器調試中一切正常。特別是在 iOS WebView 中,這類緩存和加載問題常常隱匿、難以復現。 這篇文章將通過一…

GoLand 項目從 0 到 1:第二天 —— 數據庫自動化

第二天核心任務:自動化與多數據庫支持第二天的開發聚焦于數據庫自動化流程構建與MongoDB 業務鏈路擴展,通過工具化手段解決數據庫操作的重復性問題,同時完善多數據庫支持能力。經過一天的開發,項目已實現數據庫初始化、遷移、種子…

qt框架,使用webEngine如何調試前端

解決 Qt 5.14.2 中啟用開發者工具的問題問題在于 Qt 5.14.2 中 QWebEngineSettings::DeveloperExtrasEnabled 屬性已被棄用或更改。正確啟用開發者工具的完整方法&#xff08;Qt 5.14.2&#xff09;1. 修改 main.cpp#include <QWebEngineView> #include <QWebEngineSe…

【Atlassian生態】Jira Cloud單站點現可支持10萬用戶:架構升級與龍智云遷移服務

作為Atlassian全球白金合作伙伴&#xff0c;龍智團隊非常激動地宣布&#xff1a;Jira迎來歷史性突破——Jira Cloud單個站點最高可支持10萬用戶&#xff01;覆蓋Enterprise、Premium和Standard版本。現在&#xff0c;更多的團隊可以將Jira作為核心協作中樞&#xff0c;以加速目…

深入解析JVM垃圾回收調優:性能優化實踐指南

深入解析JVM垃圾回收調優&#xff1a;性能優化實踐指南 一、技術背景與應用場景 隨著互聯網業務的飛速發展&#xff0c;Java 應用在高并發、大內存場景下對 JVM 性能提出了更高要求。垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;作為 JVM 的核心組件之一…

萬字解析Redission ---深入理解Redission上鎖過程

Redisson獲取鎖過程 RLock lock redissonClient.getLock("lock:order" userId); boolean isLock lock.tryLock(1L, TimeUnit.SECONDS);調用tyrLock其實就是下面的方法&#xff0c;如果說沒有指定鎖的過期時間&#xff0c;可以看到這邊設置為了-1Overridepublic bo…

NVM踩坑實錄:配置了npm的阿里云cdn之后,下載nodejs老版本(如:12.18.4)時,報404異常,下載失敗的問題解決

文章目錄一、情景還原二、分析原因三、解決方案一、情景還原 有個老項目&#xff0c;需要用到 node 的 12.18.4 版本。 小case&#xff0c;我裝了 nvm 的&#xff0c;根本構不成挑戰&#xff0c;敲敲命令就可以了&#xff1a; # 安裝12.18.4版本的nodejs nvm install 12.18.…

優秀案例:基于python django的智能家居銷售數據采集和分析系統設計與實現,使用混合推薦算法和LSTM算法情感分析

1 緒論1.1 研究的背景和意義本文所研究設計的智能家居銷售數據采集與分析系統主要是為了提升數據的采集效率&#xff0c;并且實現及時采集到的線上電商平臺及線下店面的多重渠道銷售數據的采集與分析&#xff0c;精確地進行相關的數據采集并應用先進的數據挖掘算法進行分析挖掘…

【傳感器標定(四):多傳感器融合定位系統中的標定與時間同步方案】

1. 系統框架概述 本方案采用"三層標定框架"&#xff0c;整體架構如下圖所示&#xff1a; #mermaid-svg-WhuG9fzKdHSAzSNh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WhuG9fzKdHSAzSNh .error-icon{f…

PostgreSQL 跨庫查詢方法

問題描述&#xff1a; PostgreSQL 跨庫查詢方法 select rc.tm,fq,fq_old,sccd,unitcd from resource_calc_scene_section_result as rc inner join "mxpt_yushuiqingsrc_databases"."public".st_river_r_hi as st on st.stcd rc.bscd and st.tm rc.tmwher…

畢業論文參考文檔(免費)—DHT11 溫濕度傳感器的硬件與軟件系統設計

畢業論文參考文檔&#xff08;免費&#xff09;—DHT11 溫濕度傳感器的硬件與軟件系統設計第一章 硬件系統設計 1.1 硬件組成與接口設計 DHT11 采用 4 引腳封裝&#xff08;SOP-4&#xff09;&#xff0c;如圖 1-1 所示。核心硬件由三部分構成&#xff1a;電阻式濕度檢測元件、…

壁紙管理 API 文檔

壁紙管理 API 文檔環境&#xff1a;Python 3.9、Flask 2.x、PyMySQL 1.x 運行&#xff1a;python app.py 監聽&#xff1a;http://0.0.0.0:5000通用響應格式 {"code": 200, // 業務碼&#xff1a;200 成功&#xff0c;201 創建成功&#xff0c;400 參數錯誤&am…

常見問題三

在前端開發中&#xff0c;Vue 的數據響應機制、腳本加載策略以及函數式編程技巧是高頻考點和日常開發的核心基礎。本文將圍繞這幾個關鍵點展開詳細解析&#xff0c;幫助開發者深入理解其原理與應用。一、Vue2 與 Vue3 的數據響應原理對比Vue 的核心特性之一是數據響應式—— 當…

清華大學頂刊發表|破解無人機抓取與投遞難題

在城市配送、應急物資投放和倉儲揀選等場景&#xff0c;人們期待無人機能夠獨立完成“取-運-投”全流程。然而主流多旋翼通常采用下掛式夾爪或機械臂&#xff0c;包裹懸在機體下方&#xff0c;帶來重心下移、轉動慣量增加等問題。為突破這一結構瓶頸&#xff0c;清華大學機械工…