MySQL GTID模式主從同步配置全指南:從配置到故障轉移

前言

MySQL主從復制是企業級數據庫架構的基礎,而GTID(Global Transaction Identifier)模式則是MySQL 5.6版本后推出的革命性復制技術。本文將詳細介紹如何配置基于GTID的主從同步,并包含實用的故障轉移操作指南。
?

一、GTID模式核心優勢

相比傳統基于binlog位置的主從復制,GTID模式具有以下優勢:

  1. 自動故障恢復:無需記憶復雜的binlog位置

  2. 簡化配置MASTER_AUTO_POSITION=1自動定位同步點

  3. 高可靠性:全局唯一事務ID確保數據一致性

  4. 支持復雜拓撲:輕松實現多源復制和環形復制
    ?

二、主庫配置詳解

1. 修改MySQL配置文件(my.cnf)
?

[mysqld]
# 基礎配置
server-id = 1 ? ? ? ? ? ? ? ?# 必須唯一
log_bin = mysql-bin ? ? ? ? ?# 開啟二進制日志

# GTID核心配置
gtid_mode = ON ? ? ? ? ? ? ? # 啟用GTID模式
enforce_gtid_consistency = ON # 強制GTID一致性

# 推薦配置
binlog_format = ROW ? ? ? ? ?# 推薦使用ROW格式
binlog_row_image = FULL ? ? ?# 完整行鏡像
log_slave_updates = ON ? ? ? # 從庫也記錄二進制日志(級聯復制時需要)
sync_binlog = 1 ? ? ? ? ? ? ?# 每次事務都同步binlog到磁盤

# 性能優化參數
binlog_group_commit_sync_delay = 100?
binlog_group_commit_sync_no_delay_count = 10

關鍵參數說明

  • gtid_mode:必須開啟才能使用GTID復制

  • enforce_gtid_consistency:確保事務符合GTID要求

  • binlog_format=ROW:推薦使用行模式,數據一致性更好
    ?

2. 創建復制賬號

-- 安全建議:使用mysql_native_password插件
CREATE USER 'repl_standby' IDENTIFIED WITH mysql_native_password BY 'Standby_Repl123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_standby';
FLUSH PRIVILEGES;?

安全提示

  • 避免使用弱密碼

  • 生產環境建議限制IP訪問(如'repl'@'192.168.1.%'

  • MySQL 8.0+默認使用caching_sha2_password,舊版客戶端需指定mysql_native_password

三、從庫配置詳解

1. 修改MySQL配置文件

[mysqld]
# 基礎配置
server-id = 2 ? ? ? ? ? ? ? ?# 必須唯一且與主庫不同
log_bin = mysql-bin ? ? ? ? ?# 推薦從庫也開啟二進制日志

# GTID配置
gtid_mode = ON ? ? ? ? ? ? ??
enforce_gtid_consistency = ON
log_slave_updates = ON ? ? ? # 允許從庫記錄二進制日志

# 安全配置
read_only = ON ? ? ? ? ? ? ? # 設置從庫為只讀模式
super_read_only = ON ? ? ? ? # 禁止包括超級用戶在內的所有寫入
skip_slave_start = ON ? ? ? ?# 啟動時不自動開始復制

關鍵參數說明

  • read_onlysuper_read_only:防止從庫被意外寫入

  • skip_slave_start:避免重啟后自動連接可能有問題的主庫

2. 配置主從連接

CHANGE MASTER TO
MASTER_HOST = 'master_ip', ? ? ?-- 替換為主庫實際IP
MASTER_USER = 'repl_standby', ? -- 復制賬號
MASTER_PASSWORD = 'Standby_Repl123!',
MASTER_AUTO_POSITION = 1; ? ? ? # 關鍵參數,啟用GTID自動定位

-- 啟動復制
START SLAVE;

3. 驗證復制狀態

SHOW SLAVE STATUS;?

重點關注字段

  • Slave_IO_Running: Yes

  • Slave_SQL_Running: Yes

  • Retrieved_Gtid_Set: 已接收的GTID集合

  • Executed_Gtid_Set: 已執行的GTID集合

  • Seconds_Behind_Master: 復制延遲秒數

四、故障轉移操作指南

-- 停止復制
STOP SLAVE;

-- 重置復制信息
RESET MASTER; ?-- 或 RESET SLAVE ALL;

-- 恢復寫能力
SET GLOBAL read_only = 0;
SET GLOBAL super_read_only = 0;

2. 原主庫恢復后作為新從庫

-- 在新主庫上創建復制賬號(如尚未創建)
CREATE USER 'repl_standby' IDENTIFIED WITH mysql_native_password BY 'Standby_Repl123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_standby';

-- 在原主庫上配置復制
CHANGE MASTER TO
MASTER_HOST = 'new_master_ip',
MASTER_USER = 'repl_standby',
MASTER_PASSWORD = 'Standby_Repl123!',
MASTER_AUTO_POSITION = 1;

START SLAVE;

五、常見問題解決方案

1. GTID模式啟用失敗

錯誤The value of @@GLOBAL.GTID_MODE can only be changed one step at a time

解決方案

-- 分步執行
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
SET @@GLOBAL.GTID_MODE = ON;

?2. 復制中斷處理

查看錯誤原因

?SHOW SLAVE STATUS
-- 查看Last_IO_Error和Last_SQL_Error字段

跳過指定錯誤

STOP SLAVE;
SET GTID_NEXT='aaa-bbb-ccc:123'; -- 指定要跳過的事務GTID
BEGIN; COMMIT;
SET GTID_NEXT='AUTOMATIC';
START SLAVE;

六、性能優化建議?

  1. 網絡優化

    • 主從服務器盡量同機房部署

    • 使用萬兆網絡連接

  2. 參數調優

slave_parallel_workers = 4 ? ? ?# 并行復制線程數
slave_parallel_type = LOGICAL_CLOCK ?# 基于事務依賴的并行復制

  1. 監控建議

    • 監控Seconds_Behind_Master

    • 設置slave_net_timeout避免網絡問題導致長時間等待

結語

GTID模式極大簡化了MySQL主從復制的管理和維護工作。通過本文的配置指南,您可以快速搭建高可用的MySQL復制環境。實際生產環境中,建議結合MHA或Orchestrator等工具實現自動故障轉移。

最佳實踐提示

  1. 變更前務必備份數據

  2. 生產環境建議先在測試環境驗證

  3. 定期檢查復制狀態和延遲

希望本文對您有所幫助,歡迎在評論區交流討論!

?

?

?

?

?

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

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

相關文章

MAC系統下完全卸載Android Studio

刪除以下文件 /Applications/Android Studio.app /Users/用戶名/Library/Application Support/Google/AndroidStudio2024.2 /Users/用戶名/Library/Google/AndroidStudio /Users/用戶名/Library/Preferences/com.google.android.studio.plist /Users/用戶名/Library/Cache…

<C#>.NET WebAPI 的 FromBody ,FromForm ,FromServices等詳細解釋

在 .NET 8 Web API 中,[FromBody]、[FromForm]、[FromHeader]、[FromKeyedServices]、[FromQuery]、[FromRoute] 和 [FromServices] 這些都是用于綁定控制器動作方法參數的特性,下面為你詳細解釋這些特性。 1. [FromBody] 作用:從 HTTP 請求…

# 透視 Linux 內核:Socket 機制的底層架構與運行邏輯深度解析

在由 Linux 操作系統構建的龐大網絡生態中,Socket 作為網絡通信的核心樞紐,承載著不同主機間應用進程的數據交互重任。無論是日常的網頁瀏覽、在線游戲,還是復雜的分布式系統通信,Socket 都在幕后扮演著關鍵角色。盡管多數開發者對…

# 利用遷移學習優化食物分類模型:基于ResNet18的實踐

利用遷移學習優化食物分類模型:基于ResNet18的實踐 在深度學習的眾多應用中,圖像分類一直是一個熱門且具有挑戰性的領域。隨著研究的深入,我們發現利用預訓練模型進行遷移學習是一種非常有效的策略,可以顯著提高模型的性能&#…

Excel提取圖片并自動上傳到文件服務器(OOS),獲取文件鏈接

Excel提取圖片并自動上傳到接口 在實際項目中,我們可能經常會遇到需要批量從Excel文件(.xlsx)中提取圖片并上傳到特定接口的場景。今天,我就詳細介紹一下如何使用Python實現這一功能,本文會手把手教你搭建一個完整的解…

jmeter利用csv進行參數化和自動斷言

1.測試數據 csv測試數據如下(以注冊接口為例) 2.jemer參數化csv設置 打開 jmeter,添加好線程組、HTTP信息頭管理器、CSV 數據文件設置、注冊請求、響應斷言、查看結果樹 1) CSV 數據文件設置 若 CSV 中數據包含中文,…

騰訊云對象存儲m3u8文件使用騰訊播放器播放

參考騰訊云官方文檔: 播放器 SDK Demo 體驗_騰訊云 重要的一步來了: 登錄騰訊云控制臺,找到對象存儲的存儲桶。 此時,再去刷新剛才創建的播放器html文件,即可看到播放畫面了。

CSS 美化頁面(五)

一、position屬性 屬性值??描述??應用場景?static默認定位方式,元素遵循文檔流正常排列,top/right/bottom/left 屬性無效?。普通文檔流布局,默認布局,無需特殊定位。relative相對定位,相對于元素原本位置進行偏…

Spring MVC 核心注解與文件上傳教程

一、RequestBody 注解詳解 1. 基本使用 作用:從 HTTP 請求體中獲取數據,適用于 POST/PUT 請求。 限制:GET 請求無請求體,不可使用該注解。 示例代碼 Controller RequestMapping("/demo01") public class Demo01Cont…

js原型鏈prototype解釋

function Person(){} var personnew Person() console.log(啊啊,Person instanceof Function);//true console.log(,Person.__proto__Function.prototype);//true console.log(,Person.prototype.__proto__ Object.prototype);//true console.log(,Function.prototype.__prot…

為您的照片提供本地 AI 視覺:使用 Llama Vision 和 ChromaDB 構建 AI 圖像標記器

有沒有花 20 分鐘瀏覽您的文件夾以找到心中的特定圖像或屏幕截圖?您并不孤單。 作為工作中的產品經理,我總是淹沒在競爭對手產品的屏幕截圖、UI 靈感以及白板會議或草圖的照片的海洋中。在我的個人生活中,我總是捕捉我在生活中遇到的事物&am…

Kafka消費者端重平衡流程

重平衡的完整流程需要消費者 端和協調者組件共同參與才能完成。我們先從消費者的視角來審視一下重平衡的流程。在消費者端,重平衡分為兩個步驟:分別是加入組和等待領導者消費者(Leader Consumer)分配方案。這兩個步驟分別對應兩類…

2025年五大ETL數據集成工具推薦

ETL工具作為打通數據孤島的核心引擎,直接影響著企業的決策效率與業務敏捷性。本文精選五款實戰型ETL解決方案,從零門檻的國產免費工具到國際大廠企業級平臺,助您找到最適合的數據集成利器。 一、谷云科技ETLCloud:國產數據集成工…

PageIndex:構建無需切塊向量化的 Agentic RAG

引言 你是否對長篇專業文檔的向量數據庫檢索準確性感到失望?傳統的基于向量的RAG系統依賴于語義相似性而非真正的相關性。但在檢索中,我們真正需要的是相關性——這需要推理能力。當處理需要領域專業知識和多步推理的專業文檔時,相似度搜索常…

ubuntu20.04 遠程桌面Xrdp方式

1,Ubuntu 安裝Xrdp 方法 1.1,安裝xrdp sudo apt install xrdp 1.2,檢查xrdp狀態 sudo systemctl status xrdp 1.3,加入ssl-cert sudo adduser xrdp ssl-cert 1.4,重啟xrdp服務 sudo systemctl restart xrdp 最后…

Java學習手冊:RESTful API 設計原則

一、RESTful API 概述 REST(Representational State Transfer)即表述性狀態轉移,是一種軟件架構風格,用于設計網絡應用程序。RESTful API 是符合 REST 原則的 Web API,通過使用 HTTP 協議和標準方法(GET、…

Spring Boot 核心注解全解:@SpringBootApplication背后的三劍客

大家好呀!👋 今天我們要聊一個超級重要的Spring Boot話題 - 那個神奇的主類注解SpringBootApplication!很多小伙伴可能每天都在用Spring Boot開發項目,但你真的了解這個注解背后的秘密嗎?🤔 別擔心&#x…

weibo_har鴻蒙微博分享,單例二次封裝,鴻蒙微博,微博登錄

weibo_har鴻蒙微博分享,單例二次封裝,鴻蒙微博 HarmonyOS 5.0.3 Beta2 SDK,原樣包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2) 🏆簡介 zyl/weibo_har是微博封裝使用,支持原生core使用 &a…

tomcat集成redis實現共享session

中間件&#xff1a;Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包&#xff1a;commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…

JavaScript 擴展Array類方法實現數組求和

題目描述&#xff1a;使用原型對象擴展Array類&#xff0c;實現返回數字型數組的和 <script>const arr [1,2,3,4,5,6]Array.prototype.sum function(){return this.reduce((prev,item)>prev item,0)}console.log(arr.sum())</script>求和函數中this 指向調用…