导读:本期聚焦于小伙伴创作的《mysql5.7如何通过GTID实现主从切换?GTID模式配置要点有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《mysql5.7如何通过GTID实现主从切换?GTID模式配置要点有哪些》有用,将其分享出去将是对创作者最好的鼓励。

GTID即全局事务标识符,是mysql5.7中用于唯一标识每个事务的编号,基于GTID的主从复制可以自动定位同步位点,避免了传统基于binlog文件和位置同步的繁琐操作,主从切换时也更加高效。GTID由源服务器的UUID和事务序号组成,在整个复制集群中全局唯一,不会重复。

mysql5.7如何通过GTID实现主从切换?GTID模式配置要点有哪些

GTID模式配置要点

在mysql5.7中开启GTID模式需要修改配置文件并重启服务,核心配置参数如下,所有参与复制的节点都需要配置。

核心配置参数

  • gtid_mode:控制GTID模式的开启状态,可选值为OFF、OFF_PERMISSIVE、ON_PERMISSIVE、ON,生产环境建议直接设置为ON,开启完整的GTID功能。
  • enforce_gtid_consistency:强制事务支持GTID一致性,设置为ON时,只有符合GTID规范的事务才能执行,避免产生不支持GTID的操作。
  • server_id:每个mysql实例的唯一标识,集群内所有实例的server_id不能重复,建议设置为整数,范围在1到2^32-1之间。
  • log_bin:开启binlog日志,GTID依赖binlog记录事务信息,必须设置为ON。
  • log_slave_updates:从库是否将同步过来的事务记录到自己的binlog中,如果后续该从库会成为主库,需要设置为ON。

配置文件示例

以主库配置文件my.cnf为例,添加以下配置项:

[mysqld]
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
log_bin=mysql-bin
log_slave_updates=ON
binlog_format=ROW

从库的配置只需要修改server_id为不同的值即可,比如设置为2,其他参数和主库保持一致。修改完成后重启mysql服务使配置生效。

配置验证

重启服务后,可以登录mysql执行以下命令验证GTID是否开启成功:

-- 查看GTID相关状态
SHOW VARIABLES LIKE 'gtid_mode';
SHOW VARIABLES LIKE 'enforce_gtid_consistency';
-- 查看当前实例的UUID
SELECT @@server_uuid;

如果gtid_mode显示为ON,enforce_gtid_consistency显示为ON,说明GTID模式配置成功。

基于GTID实现主从切换的完整流程

假设当前有主库A(server_id=1)和从库B(server_id=2),现在需要将主从角色切换,让B成为新主库,A成为新从库。

步骤1:确保主从数据同步完成

在切换前先确认从库B已经同步完主库A的所有数据,避免数据丢失。登录从库B执行以下命令:

SHOW SLAVE STATUSG

查看返回结果中的Slave_IO_RunningSlave_SQL_Running是否都为Yes,同时Seconds_Behind_Master为0,说明从库和主库数据完全一致。

步骤2:将原主库A设置为只读

为了避免切换过程中有新的写入操作,先登录原主库A执行以下命令设置为只读:

SET GLOBAL read_only=ON;
-- 如果有超级权限的用户还需要设置super_read_only
SET GLOBAL super_read_only=ON;

步骤3:等待从库B同步完剩余数据

再次在从库B执行SHOW SLAVE STATUSG,确认所有relay log都已经应用完成,没有延迟。

步骤4:将从库B提升为新主库

登录从库B,停止复制进程,然后关闭只读模式:

-- 停止复制
STOP SLAVE;
-- 重置复制信息(可选,避免后续作为从库时残留旧配置)
RESET SLAVE ALL;
-- 关闭只读模式
SET GLOBAL read_only=OFF;
SET GLOBAL super_read_only=OFF;

步骤5:将原主库A配置为新从库

登录原主库A,先关闭只读模式,然后配置复制指向新主库B:

-- 关闭只读模式
SET GLOBAL read_only=OFF;
SET GLOBAL super_read_only=OFF;
-- 配置复制指向新主库B,使用MASTER_AUTO_POSITION=1开启GTID自动定位
CHANGE MASTER TO
MASTER_HOST='新主库B的IP地址',
MASTER_PORT=3306,
MASTER_USER='复制用户',
MASTER_PASSWORD='复制用户密码',
MASTER_AUTO_POSITION=1;
-- 启动复制
START SLAVE;

步骤6:验证切换结果

登录新主库B执行写入操作,然后登录新从库A查看数据是否同步成功:

-- 新主库B执行
CREATE DATABASE test_gtid_switch;
USE test_gtid_switch;
CREATE TABLE t1(id INT PRIMARY KEY);
INSERT INTO t1 VALUES(1);

-- 新从库A执行
USE test_gtid_switch;
SELECT * FROM t1;

如果从库A能查询到插入的数据,说明主从切换成功,新的复制关系正常运行。

注意事项

  • 所有参与GTID复制的实例,mysql版本建议保持一致,至少都是5.7及以上,避免版本差异导致GTID兼容问题。
  • 复制用户的权限需要包含REPLICATION SLAVE、REPLICATION CLIENT权限,确保可以正常拉取binlog。
  • 不要手动修改gtid_purged参数,除非明确知道操作的影响,错误的设置会导致事务同步异常。
  • 主从切换完成后,建议检查应用的数据库连接配置,将写请求指向新的主库,读请求根据需求分配到对应的从库。

mysql5.7GTID主从切换GTID_mode修改时间:2026-06-19 00:36:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。