暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

浅谈MySQL-gtid

原创 张sir 2020-08-28
2011

该版本为mysql5.7
GTID也叫全局事务ID,GTID=server-uuid:transaction_id,其中server-uuid每个数据库不一样,存放在数据目录下的auto.cnf文件里。GTID可以更方便的实现主从间的failover,不需要寻找position和binlog
但是因为GTID复制时针对事务来说的,一个事务只对应一个GTID,所以需注意:
1、不能使用create table table_name select * from table_name;
2、在一个事务中既包含事务表的操作又包含非事务表
3、不支持create temporary table or drop temporary table语句操作
4、使用GTID复制从库跳过错误时不支持sql_slave_skip_counter参数的语句。
搭建gtid主从复制:
主库参数设置:gtid_mode=on、enforce_gtid_consistency=on、log_bin=on、binlog_format=row
从库参数配置:gtid_mode=on、enforce_gtid_consistency=on、log_slave_updates=1(5.7可以关闭该参数使用gtid_executed这个表)但建议从库中开启。
gtid_executed_compression_period:控制gtid_executed表的压缩,默认为1000(表压缩在执行完1000个事务后开始)
MySQL5.7.6开始,gtid_mode支持动态修改,拥有4种模式,只能逐级修改:off-不支持gtid事务;off_permissive-新的事务是匿名的,同时允许复制的事务可以是GTID也可以是匿名的;on_permissive-新的事务使用GTID,同时允许复制的事务可以是GTID也可以是匿名的;on-支持GTID的事务
配置主从:change master to master_auto_position=1,master_host=‘192.168.10.11’,master_user=‘bak’,master_password=‘bak123’;
从库通过执行show slave status可以查看接收的gtid和从库当前执行的gtid
实验:GTID与传统主从复制之间的切换
环境介绍:主为192.168.56.11,从库为192.168.56.12
1、gtid切换到传统复制:
(1)stop slave;停止主从复制
(2)调整主从复制模式:change master to master_auto_position=0,master_host=‘192.168.56.11’,master_user=‘bak’,master_password=‘bak123’,master_log_file=‘mysql-binlog.000011’,master_log_pos=‘1231’;
(3)开启复制功能:start slave;
(4)调整主从库的GTID模式为off,需逐级调整on_permissive–off_permissive–off
(5)将gtid_mode=off和enforce_gtid_consistency=off写入到主从各自的配置文件中,以便下次重启生效
2、传统复制切换到GTID模式:
(1)主从库上均修改参数enforce_gtid_consistency=warn,确保error log中没有告警信息,如果有则需要先修复
(2)主从库上均修改参数enforce_gtid_consistency=on,保证GTID的一致性
(3)主从库上均修改参数gtid_mode=on_permissive
(4)确定从库的参数Ongoing_anonymous_transaction_count是否为0,如果是0则没有等待的事务,则可以进行下一步操作
(5)主从库上均修改参数gtid_mode=on
image.png
(6)将主从复制停止:stop slave;
(7)从库执行:change master to master_auto_position=1;
(8)开启主从复制:start slave;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论