【MySQL】第12節|MySQL 8.0 主從復制原理分析與實戰(二)

一、組復制(MGR)核心概念

1. 定義與定位
  • 目標:解決傳統主從復制的單點故障、數據不一致問題,提供高可用、高擴展的分布式數據庫方案。
  • 基于 GTID:依賴全局事務標識符(GTID)實現事務一致性,確保跨節點事務唯一且有序。
  • 分布式協議:基于?Paxos 協議實現節點間數據共識,保證事務在多數節點提交后才生效。
2. 核心優勢

傳統主從復制

組復制(MGR)

單主節點,存在單點故障

多節點集群,支持單主或多主模式

異步復制,可能丟數據

半同步或強一致性(取決于配置)

手動故障轉移

自動選主(單主模式)

從節點只讀

多主模式下節點可讀寫

3. 應用場景
  • 高可用性集群:金融、電商等不能容忍單點故障的場景。
  • 多活數據中心:支持多主寫入,適合跨地域數據同步。
  • 讀寫高并發:多主模式下分攤寫壓力(需解決沖突)。

二、組復制模式與原理

1. 單主模式(推薦)
  • 特點
    • 集群中僅有一個主節點(Primary)接受寫請求,其余節點為從節點(Secondary,只讀)。
    • 主節點故障時,自動選舉新主節點(基于 Paxos 協議)。
  • 適用場景:大多數業務場景,避免多主寫入沖突。
2. 多主模式
  • 特點
    • 所有節點均可讀寫,適合分布式事務或跨地域寫入。
    • 需啟用?沖突檢測(如?group_replication_enforce_update_everywhere_checks=ON),避免主鍵沖突。
  • 風險:寫入沖突可能導致事務回滾,需謹慎設計業務邏輯。
3. 核心組件
  • Group Replication 插件:實現節點間通信、事務認證和復制。
  • GTID 集合:記錄已執行的事務,確保節點數據一致。
  • 分布式恢復機制:新節點加入時,通過全量備份+增量 GTID 同步數據。

三、單主模式部署步驟(基于 Docker)

1. 環境規劃

節點角色

server_id

端口

配置文件

mgr-node1(主)

1

3321

custom.cnf(主節點配置)

mgr-node2(從)

2

3322

custom.cnf(從節點配置)

mgr-node3(從)

3

3323

custom.cnf(從節點配置)

2. 關鍵配置文件(custom.cnf
[mysqld]
# 基礎配置
server_id=1                 # 唯一節點ID
gtid_mode=ON                # 啟用GTID
enforce_gtid_consistency=ON # 強制GTID一致性
log-bin=mysql-bin           # 二進制日志
default-time_zone='+8:00'   # 時區# 組復制配置
plugin_load_add='group_replication.so' # 加載組復制插件
group_replication_group_name="117dc7ea-b9bd-11ee-9bdb-0242ac120002" # 統一組名(UUID格式)
group_replication_local_address="mgr-node1:33061" # 內部通信地址(端口自定義)
group_replication_group_seeds="mgr-node1:33061,mgr-node2:33061,mgr-node3:33061" # 種子節點列表
group_replication_bootstrap_group=OFF # 非引導節點設為OFF
3. 創建復制用戶
-- 在所有節點執行
CREATE USER 'fox'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, GROUP_REPLICATION_STREAM ON *.* TO 'fox'@'%';
FLUSH PRIVILEGES;
4. 啟動組復制
  1. 引導主節點(mgr-node1)
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
  1. 加入從節點(mgr-node2/mgr-node3)
START GROUP_REPLICATION;
5. 驗證集群狀態
-- 查看組成員
SELECT MEMBER_HOST, MEMBER_ROLE, MEMBER_STATE FROM performance_schema.replication_group_members;-- 查看主節點
SHOW STATUS LIKE 'group_replication_primary_member';

四、多主模式關鍵調整

  1. 關閉單主模式
SET GLOBAL group_replication_single_primary_mode=OFF;
  1. 啟用沖突檢測
SET GLOBAL group_replication_enforce_update_everywhere_checks=ON;
  1. 注意事項
    • 避免跨節點更新同一數據(如共享主鍵表)。
    • 使用中間件(如 MySQL Router)路由讀寫請求。

五、與傳統主從復制的對比

維度

傳統主從復制

組復制(MGR)

復制協議

異步/半同步

基于 Paxos 的共識協議

故障轉移

手動或依賴外部工具(如 MHA)

自動選舉(單主模式)

數據一致性

最終一致(異步)

強一致(多節點確認)

寫擴展性

單主寫入

多主寫入(需處理沖突)

部署復雜度

較低

較高(需配置插件和分布式協議)

六、注意事項與最佳實踐

  1. 節點數量:建議奇數節點(如 3/5 個),確保多數派共識(N ≥ 2f+1,f 為允許故障節點數)。
  2. 網絡要求:低延遲、高可靠網絡,避免腦裂(Split-Brain)。
  3. 監控告警
    • 跟蹤?Seconds_Behind_Master(單主模式)或沖突日志。
    • 使用 Prometheus + MySQL Exporter 監控集群狀態。
  4. 備份與恢復
    • 新節點加入需全量備份(如?mysqldump)+ GTID 增量同步。
    • 避免在復制中直接刪除數據文件,可能導致 GTID 空洞。

七、總結

組復制(MGR)是 MySQL 官方提供的高可用解決方案,通過 GTID 和分布式協議解決了傳統復制的痛點。單主模式適合大多數場景,而多主模式需謹慎評估業務沖突風險。實際應用中,建議結合中間件(如 MySQL Router)和監控工具,構建健壯的分布式數據庫集群。

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

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

相關文章

React 泛型組件:用TS來打造靈活的組件。

文章目錄 前言一、什么是泛型組件?二、為什么需要泛型組件?三、如何在 React 中定義泛型組件?基礎泛型組件示例使用泛型組件 四、泛型組件的高級用法帶默認類型的泛型組件多個泛型參數 五、泛型組件的實際應用場景數據展示組件表單組件狀態管…

如何手搓一個查詢天氣的mcp server

環境配置煩請移步上一篇博客 這里直接步入主題,天氣查詢的api用的是openweather,免費注冊就可以使用了 每天1000次內使用時免費的,大概的api 如下 https://api.openweathermap.org/data/2.5/weather?qBeijing,cn&APPID注冊后可以拿到一個…

深入解析計算機網絡核心協議:ARP、DHCP、DNS與HTTP

文章目錄 一、ARP(地址解析協議)1.1 定義與功能1.2 工作原理1.3 應用場景1.4 安全風險與防御 二、DHCP(動態主機配置協議)2.1 定義與功能2.2 工作原理2.3 應用場景2.4 優缺點與安全建議 三、DNS(域名系統)3…

《Java 單例模式:從類加載機制到高并發設計的深度技術剖析》

【作者簡介】“琢磨先生”--資深系統架構師、985高校計算機碩士,長期從事大中型軟件開發和技術研究,每天分享Java硬核知識和主流工程技術,歡迎點贊收藏! 一、單例模式的核心概念與設計目標 在軟件開發中,我們經常會遇…

NL2SQL代表,Vanna

Vanna 核心功能、應用場景與技術特性詳解 一、核心功能 1. 自然語言轉SQL查詢 Vanna 允許用戶通過自然語言提問(如“顯示2024年銷售額最高的產品”),自動生成符合數據庫規范的SQL查詢語句。其底層采用 RAG(檢索增強生成&#xf…

【動態規劃】子數組系列(二)

📝前言說明: 本專欄主要記錄本人的動態規劃算法學習以及LeetCode刷題記錄,按專題劃分每題主要記錄:(1)本人解法 本人屎山代碼;(2)優質解法 優質代碼;&…

68元開發板,開啟智能硬件新篇章——明遠智睿SSD2351深度解析

在智能硬件開發領域,開發板的選擇至關重要。它不僅關系到項目的開發效率,還直接影響到最終產品的性能與穩定性。而今天,我要為大家介紹的這款明遠智睿SSD2351開發板,僅需68元,卻擁有遠超同價位產品的性能與功能&#x…

篇章六 數據結構——鏈表(二)

目錄 1. LinkedList的模擬實現 1.1 雙向鏈表結構圖?編輯 1.2 三個簡單方法的實現 1.3 頭插法 1.4 尾插法 1.5 中間插入 1.6 刪除 key 1.7 刪除所有key 1.8 clear 2.LinkedList的使用 2.1 什么是LinkedList 5.2 LinkedList的使用 1.LinkedList的構造 2. LinkedList的…

刪除隊列中整數

給定一個長度為N的整數數列A_1,A_2,...,A_N,請重復以下操作K次。 每次選擇數列中最小的整數(如果最小值不止一個,選擇最靠前的),將其刪除,并把與它相鄰的整數加上被刪除的數值。 請問K次操作后的序列是什…

[神經網絡]使用olivettiface數據集進行訓練并優化,觀察對比loss結果

結合歸一化和正則化來優化網絡模型結構,觀察對比loss結果 搭建的神經網絡,使用olivettiface數據集進行訓練,結合歸一化和正則化來優化網絡模型結構,觀察對比loss結果 from sklearn.datasets import fetch_olivetti_faces #倒入數…

算法分析·回溯法

回溯法 方法概述算法框架問題實例TSP 問題n皇后問題 回溯法效率分析 方法概述 回溯法是一個既帶有系統性又帶有跳躍性的搜索算法; **系統性:**它在包含問題的所有解的解空間樹中,按照深度優先的策略,從根結點出發搜索解空間樹。…

Golang分布式系統開發實踐指南

Golang分布式系統開發實踐指南 一、為什么選擇Golang? ?原生并發模型? Goroutine和Channel機制天然適合分布式系統的并發需求?高性能編譯? 靜態編譯生成二進制文件,部署簡單,內存占用低?豐富生態? Go Module管理、標準庫支持HTTP/2、…

基于stm32風速風向溫濕度和瓦斯檢測(仿真+代碼)

資料下載地址:基于stm32風速風向溫濕度和瓦斯檢測 一、項目功能 1.風速,風向,溫濕度,瓦斯,報警。 2.可以設置溫濕度,瓦斯,風速報警閾值。 3.數據上傳到云平臺。 二、仿真圖 三、程序 #inc…

桃黑黑反斗戰

1.編寫求解Hanoi漢諾塔的遞歸算法代碼&#xff0c;輸出移動過程&#xff0c;并統計總移動次數。 對不同規模的漢諾塔&#xff0c;給出測試的結果 #include <stdio.h> #include <time.h> int moveCount 0; void hanoi(int n,char source,char auxiliary,char targ…

react-native的token認證流程

在 React Native 中實現 Token 認證是移動應用開發中的常見需求&#xff0c;它用于驗證用戶的身份并授權其訪問受保護的 API 資源。 Token 認證的核心流程&#xff1a; 用戶登錄 (Login): 用戶在前端輸入用戶名和密碼。前端將這些憑據發送到后端 API。后端驗證憑據。如果驗證成…

Dify:詳解 docker-compose.yaml配置文件

詳解 docker-compose.yaml 配置文件 docker-compose.yaml 是用于定義和運行多容器 Docker 應用的配置文件。下面&#xff0c;我們將詳細解釋您提供的 docker-compose.yaml 文件&#xff0c;包括各個服務的作用、配置&#xff0c;以及它們與 .env 文件之間的關系。 文件概覽 自…

Python基于Django的主觀題自動閱卷系統【附源碼、文檔說明】

博主介紹&#xff1a;?Java老徐、7年大廠程序員經歷。全網粉絲12w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&…

今日行情明日機會——20250528

上證指數縮量收小陰線&#xff0c;個股跌多漲少&#xff0c;總體情緒偏差&#xff0c;注意風險為主。 深證指數&#xff0c;縮量收小陰線&#xff0c;連續5天陰線&#xff0c;明后天反彈的概率增大&#xff0c;但仍要注意風險。 2025年5月28日漲停股主要行業方向分析 1. 無人…

基于stm32LORA無線抄表系統仿真

資料下載地址&#xff1a;基于stm32LORA無線抄表系統仿真 1、項目介紹 基于LoRa的無線通信的電力抄表系統&#xff0c;采集節點數據&#xff0c;通過LoRa無線通信進行數據傳輸&#xff0c;最后再網關節點上顯示。 2、仿真圖 3、仿真代碼 #include "oled.h" #incl…

不同電腦同一個網絡ip地址一樣嗎

不同電腦在連接同一個WiFi時&#xff0c;它們的IP地址會相同嗎&#xff1f;相信不少朋友都對這個問題感到好奇&#xff0c;今天我們就來詳細探討一下。 一、基礎概念&#xff1a;IP地址的本質與分類 IP地址是分配給網絡設備的唯一標識符&#xff0c;用于在互聯網或局域網中定位…