千家信息网

MySQL在做主从复制时如何使用GTID

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文主要给大家介绍MySQL在做主从复制时如何使用GTID,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在行业资讯里面关注我的更新文章的。MySQL在5.6后多了一个新的功能就是在做
千家信息网最后更新 2026年11月01日MySQL在做主从复制时如何使用GTID

本文主要给大家介绍MySQL在做主从复制时如何使用GTID,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在行业资讯里面关注我的更新文章的。

MySQL在5.6后多了一个新的功能就是在做主从复制时使用GTID,和传统的使用relaylog中指定log_pos+log_file的主从复制相比,在使用GTID做主从复制时可以不指定slave需求读取master中的哪一个binlog和偏移量。在传统的MySQL主从复制中,一旦指定错误master的偏移量后,那么就会造成主从不一致,而在基于GTID做的主从复制中就不会发生这样的问题。GTID实际上是master提交了一次事务后而产生的ID,所以在配置的过程中一般都会开启enforce_gtid_consistency(强制事务一致)的配置参数以确保GTID的安全,但是需要注意的是如果开启了开启enforce_gtid_consistency,那么在在事务中就不能创建和删除临时表,这一点需要注意,如创建临时表:

create temporary table建议改成create table

除此外还会开启log_slave_updates,这个变量在master和slave中都会开启,除此之外毋庸置疑的是一定需要开启binlog,至于其它大体和log_pos+log_file的主从复制类似,在此就说以一下不一样的地方,至于其它的以前有说过log_pos+log_file的主从复制需要的可以参看:http://jim123.blog.51cto.com/4763600/1862808,在master和slave中开启GTID的相关变量,当然如果是允许重启的话先配置好二者my.cnf是更好的,其中二者的my.cnf的[mysqld]下都需要添加的是:

log_slave_updates = ongtid_mode = onenforce_gtid_consistency = on在slave下建议开启只读:read_only = onrelay_log_info_repository=TABLE#把主从的信息记录在表中,缺省是和旧版本中一样是写在文件中master_info_repository=TABLE#这一条写在master上

其处,在配置的过程中最好把master的写入关闭,开启只读:

mysql> set global read_only = ON;Query OK, 0 rows affected (0.00 sec)

在开启相应的变量参数后,在slave上做GTID的主从复制时使用master_auto_position会根据GTID找到log_pos+log_file,相比传统的方式更为的方便

mysql> stop slave;Query OK, 0 rows affected (0.08 sec)mysql> change master to master_auto_position=0;Query OK, 0 rows affected (0.01 sec)mysql> change master to master_host='192.168.168.253',master_user='test_backup',master_password='test_backup',master_auto_position = 1;Query OK, 0 rows affected, 2 warnings (0.01 sec)mysql> start slave;Query OK, 0 rows affected (0.01 sec)

在开启后可以查看GTID参数变量:

mysql> show global variables like '%GTID%';

当然为了服务高可用,在使用GTID时MySQL也会开启log_pos+log_file,只是我们就不需要想以前那样手动指向log_pos+log_file,因此使用GTID的方式做主从复制修复时还和以前不一样:

mysql> stop slave;Query OK, 0 rows affected (0.08 sec)mysql> change master to master_auto_position=0;Query OK, 0 rows affected (0.01 sec)mysql> change master to master_host='192.168.168.253',master_user='test_backup',master_password='test_backup',master_log_file='mysql-bin.000014',master_log_pos=405051906;Query OK, 0 rows affected, 2 warnings (0.01 sec)mysql> start slave;Query OK, 0 rows affected (0.01 sec)

当然这个是基于GTID和binlog结合的恢复方式,在选择主从复制的方式只要选择其中一中恢复即可,如果只是业务不繁忙的情况下仅有少量的或没有事务时也可以尝试着使用跳过事务的方式来解决错误:

mysql> STOP SLAVE;Query OK, 0 rows affected (0.01 sec)mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;Query OK, 0 rows affected (0.01 sec)mysql> START SLAVE;Query OK, 0 rows affected (0.01 sec)

此外需要注意的是在使用MySQL的GTID时是不支持GTID直接动态关闭,如果需要关闭则需要使用GTID的4种状态:

ON:开启OFF:关闭OFF_PERMISSIVE:关闭准备ON_PERMISSIVE:开启准备

正常的开启和关闭流程是:OFF <-> OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON,即

SET GLOBAL gtid_mode = 'OFF_PERMISSIVE';SET GLOBAL gtid_mode = 'ON_PERMISSIVE';SET GLOBAL enforce_gtid_consistency = ON;#在开启准备的过程中开启SET GLOBAL gtid_mode = 'ON';

最后,需要注意的是在开启GTID复制时多个线程仅会使用一个事务,实际如果开启多线程复制时还是多线程复制,只是在查看线程列表时显示的是只有一个。

看了以上关于MySQL在做主从复制时如何使用GTID,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。

主从 事务 方式 变量 线程 配置 传统 参数 只是 实际 过程 问题 准备 一致 地方 建议 是在 错误 偏移 更新 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技金融是不是互联网金融 互联网中国科技 互联网 科技公司 朗涯互联网科技 互联网高科技股票 承德科技产业互联网发展 顶级互联网科技成果有哪些 移动互联网科技公司 互联网新科技动漫ppt素材 浙南科技城互联网大厦建设工程 玉溪新华互联网科技好不好 锡山区互联网智能科技产品供应 黑科技 体验场景 互联网大会 宇信科技在杭州互联网排第几 广东鹅鹅鹅互联网科技有限公司 珠海东科互联网科技有限公司 科技互联网专业工作会议发言稿 山东蛋芒互联网科技有限公司 华人运通互联网科技公司 小牛互联网科技有限公司地址 上海喔噻互联网科技有限公司 互联网金融与金融科技 北京互联网科技有限公司 平安科技 互联网 奇酷互联网络科技 易通互联网络科技有限公司 富国互联网科技创新基金 移动互联网科技公司 福建互联网展示科技馆设计 兰石爱特工业互联网科技分公司
0