当前位置: 首页 > news >正文

MySQL 基于 GTID 的主从复制搭建步骤

基于 GTID(全局事务标识) 的主从复制,相比传统的 binlog+position 方式,无需手动记录日志文件和偏移量,故障切换更简单、更可靠,是生产环境的首选方案。

一、GTID 核心原理

  • GTID:全局唯一事务 ID,格式为 server_uuid:transaction_id,每个事务对应一个唯一 GTID。
  • 同步逻辑:从库通过 GTID 追踪主库已执行的事务,自动找对应 binlog 重放,无需手动指定 MASTER_LOG_FILEMASTER_LOG_POS
  • 优势:故障切换自动化、主从一致性易校验、配置更简单。

二、环境准备

角色 IP 地址 MySQL 版本 核心要求
主库(Master) 192.168.1.10 5.7+/8.0+ 开启 binlog + GTID
从库(Slave) 192.168.1.11 与主库一致 server-id 唯一 + 开启 GTID
通用要求 防火墙 / 安全组开放 3306 端口

三、配置主库(Master)

1、修改 MySQL 配置文件my.cnf

[mysqld]
# 1. 开启 binlog,指定日志前缀
log_bin = mysql-bin
# 2. 服务器唯一 ID(必须大于 0,主从不能重复)
server-id = 1
# 3. 开启 GTID 模式(核心)
gtid_mode = ON
enforce_gtid_consistency = ON
# 4. binlog 格式推荐 ROW(行级复制,一致性最高)
binlog_format = ROW
# 5. 自动清理 7 天前的 binlog(可选)
expire_logs_days = 7
# 6. 主库写入数据时,记录从库需要的信息
log_slave_updates = 1

2、重启mysql

systemctl restart mysqld

3、创建主从同步专用账号

登录主库 MySQL,执行以下 SQL:

-- 创建同步账号(允许从任意地址连接)
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456';
-- 授予复制权限(GTID 同步需要 REPLICATION SLAVE 权限)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

4、查看主库 GTID 状态(可选,验证配置)

SHOW MASTER STATUS\G

关键输出Executed_Gtid_Set 字段不为空,说明 GTID 已生效。

四、配置从库(Slave)

1、修改 MySQL 配置文件my.cnf

[mysqld]
# 1. 服务器唯一 ID(必须与主库不同)
server-id = 2
# 2. 开启 GTID 模式(核心,与主库一致)
gtid_mode = ON
enforce_gtid_consistency = ON
# 3. 开启中继日志(从库必备)
relay_log = relay-log
# 4. 开启日志更新(确保级联复制可用)
log_slave_updates = 1
# 5. 设置从库只读(超级用户除外,防止误写)
read_only = 1
# 6. binlog 格式与主库一致
binlog_format = ROW

2、重启mysql服务

systemctl restart mysqld

五、从库连接主库并启动同步

登录从库 MySQL,执行以下 GTID 专属同步命令

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',        -- 主库 IP 地址
MASTER_USER='repl',                -- 同步专用账号
MASTER_PASSWORD='Repl@123456',     -- 同步账号密码
MASTER_AUTO_POSITION = 1;          -- 开启 GTID 自动定位(关键!无需指定 binlog 和 position)

启动主从同步

START SLAVE;

六、验证主从同步状态

在从库执行以下命令,检查同步状态:

SHOW SLAVE STATUS\G

核心校验指标(必须全部为 Yes)

指标 状态 说明
Slave_IO_Running Yes IO 线程正常(从主库拉取 binlog)
Slave_SQL_Running Yes SQL 线程正常(重放 binlog 事务)
Auto_Position 1 GTID 自动定位已开启
Retrieved_Gtid_Set 非空 已从主库获取的 GTID 集合
Executed_Gtid_Set 与主库一致 已在从库执行的 GTID 集合

七、测试主从同步

1、在主库创建测试数据

CREATE DATABASE gtid_test;
USE gtid_test;
CREATE TABLE test_tb (id INT PRIMARY KEY);
INSERT INTO test_tb VALUES (1), (2), (3);

2、在从库验证数据同步

USE gtid_test;
SELECT * FROM test_tb;

若能查询到 id=1/2/3 的数据,说明同步成功。

http://www.jsqmd.com/news/642539/

相关文章:

  • fdasdfsdfadsfasdfdasfasdfadsfsadfdsafasadfsdf
  • 【第8期:车机在特定地点(如山上)连接4G网络但部分应用提示“无网络连接”的问题分析与解决方案】
  • HD OPTI
  • 2025-2026年美白防晒霜品牌推荐:TOP10口碑产品评测对比顶尖敏感肌温和不刺激案例 - 品牌推荐
  • HTML头部元信息避坑指南大纲
  • 误操作后电脑不认盘?2026实测排查+修复指南(小白也能上手)
  • 国内半导体行业展会哪家好?优质国内半导体行业展会推动产业合作 - 品牌2026
  • 国家地理将广告牌改造成蜜蜂的活体家园
  • 别再手动拆PDF了!用Python+Unstructured库,5分钟搞定RAG数据预处理
  • VSCode高效搜索技巧:如何精准限定目录范围(附实战截图)
  • 为什么说2026上海紧固件专业展更适合做国际商贸对接?
  • 半导体展推荐:精选优质半导体展助力企业高效拓展业务 - 品牌2026
  • PCB寄生参数实战:从公式到布局的降噪设计
  • Eth-Trunk(链路聚合)实战:从原理到配置的深度解析
  • AIAgent租户隔离方案深度拆解(含Gartner 2024最新评估矩阵与自研RBAC+ABAC混合引擎实测数据)
  • 如何利用AWR验证优化成果_对比优化前后同一时间段的性能指标报告
  • 保姆级教程:在Ubuntu 22.04上配置向日葵开机自启(无需登录,解决无显示器黑屏问题)
  • 扫地机器人的价值重估:当狂欢落幕,谁在裸泳?
  • Linux离线部署miniconda及依赖包的完整解决方案
  • 长文 | 成年人的低谷期,都是自己一寸一寸熬出来的
  • RT1064驱动ICM42605:从寄存器配置到三轴数据采集与转换
  • 2026数据中台选型指南:从“建平台”到“用数据”,数据治理智能化如何破解落地困局?
  • 救命!别再被数码参数忽悠了[特殊字符] 从入门到精通,小白也能秒变懂行大佬
  • FPGA数字滤波器避坑指南:Quartus II FIR Compiler IP核配置的5个关键细节(附仿真失败解决方案)
  • Adobe-GenP 3.0:Adobe创意软件免费激活终极指南
  • RAG系统中的本体设计:本体如何驱动语义检索
  • 从C代码到LLVM IR:手把手教你用clang和LightIR API生成if/while循环的IR(附完整代码)
  • SQL优化多表JOIN连接的事务一致性_隔离级别选择与锁冲突管理
  • IT流程越来越规范,为什么业务却越来越不满意?
  • 多模态大模型评估不再靠“猜”:从BERTScore到M3Score,我们用42万组对比实验验证的8项可量化、可复现、可监管新指标