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.mzph.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 指向调用…