mysql中如何使用GTID实现复制

P粉602998670
发布: 2025-12-02 13:13:31
原创
396人浏览过
GTID复制需MySQL 5.6+,启用log-bin、唯一server-id、gtid_mode=ON、enforce_gtid_consistency=ON,配置主从库参数并创建复制用户,从库通过MASTER_AUTO_POSITION=1自动同步,验证数据与GTID执行集一致即可。

mysql中如何使用gtid实现复制

在MySQL中使用GTID(Global Transaction Identifier)实现复制,可以简化主从同步的管理,避免因binlog文件名和位置不一致导致的问题。GTID为每个事务分配唯一标识,使复制更可靠、易维护。

启用GTID复制的前提条件

确保主库和从库满足以下要求:

  • MySQL版本 >= 5.6(推荐5.7及以上)
  • 开启二进制日志(log-bin
  • 设置唯一的server-id
  • 启用gtid_mode = ONenforce_gtid_consistency = ON
  • 建议同时开启log-slave-updates(多级复制时必需)

配置主库(Master)

编辑主库的my.cnf配置文件

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
<p>gtid_mode = ON
enforce_gtid_consistency = ON
log-slave-updates = ON  # 若有级联复制,必须开启</p>
登录后复制

重启MySQL服务后,登录创建用于复制的用户:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
登录后复制

配置从库(Slave)

修改从库my.cnf,注意server-id不能与主库重复:

[mysqld]
server-id = 2
log-bin = mysql-bin
binlog-format = ROW
<p>gtid_mode = ON
enforce_gtid_consistency = ON
log-slave-updates = ON
relay-log = relay-bin</p>
登录后复制

重启从库MySQL服务。

建立复制关系

在从库执行以下命令连接主库:

CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_PORT=3306,
  MASTER_AUTO_POSITION = 1;
登录后复制

关键点:MASTER_AUTO_POSITION = 1 表示启用GTID自动定位,无需手动指定binlog文件和位置。

启动复制:

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版
动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版

动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版 508
查看详情 动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版
START SLAVE;
登录后复制

检查复制状态:

SHOW SLAVE STATUS\G
登录后复制

确认Slave_IO_RunningSlave_SQL_Running 都为Yes,且Retrieved_Gtid_SetExecuted_Gtid_Set 正常增长。

验证GTID复制是否生效

在主库执行一个写操作:

CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;
CREATE TABLE t1(id INT);
INSERT INTO t1 VALUES(1);
登录后复制

在从库查询:

SHOW DATABASES; -- 应看到testdb
SELECT * FROM testdb.t1; -- 应看到插入的数据
登录后复制

查看从库的GTID执行情况:

SELECT @@global.gtid_executed;
登录后复制

应包含主库生成的事务ID。

基本上就这些。GTID复制一旦配置成功,后续主从切换或恢复更简单,MySQL会自动识别已执行的事务,避免重复或遗漏。注意备份和监控仍不可少,尤其是GTID不连续时需排查原因。

以上就是mysql中如何使用GTID实现复制的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号