GTID复制与传统复制的切换

GTID复制与传统复制的切换

先说说gtid_mode参数

mysql5.7.6开始,gtid_mode支持动态修改,gtid_mode可取值为:
OFF----不支持GTID的事物;

OFF_PERMISSIVE—新的事物是匿名的,同时允许复制的事物可以是GTID,也可以是匿名的;

ON_PERMISSIVE—新的事物使用GTID,同时允许新的事物可以是GTID,也可以是匿名的;

ON—支持GTID的事物
gtid_mode虽然支持动态修改,但不支持跳跃式修改,ON_PERMISSIVE修改为OFF是不可以的

一,GTID切换为传统复制

master:192.168.136.138
slave:192.168.136.139

139:
show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.136.138
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 2587
Relay_Log_File: localhost-relay-bin.000007
Relay_Log_Pos: 313
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


Retrieved_Gtid_Set: 807de6b3-c4d3-11e7-954f-000c29b46750:4-8
Executed_Gtid_Set: 807de6b3-c4d3-11e7-954f-000c29b46750:7-8

切换过程:
(1)从库执行stop slave;然后调整为传统复制模式,让master_auto_position=0;
mysql> change master to
-> master_auto_position=0,
-> master_host=‘192.168.136.138’,
-> master_user=‘backup’,
-> master_password=‘123’,
-> master_log_file=‘mysql-bin.000001’,
-> master_log_pos=2587;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
执行完成之后,开启复制功能start slave.
(2)主从同时调整GTID模式为on_permissive.
set global gtid_mode=on_permissive;
(3)需要在主从服务器上同时调整GTID模式为off_permissive.
set global gtid_mode=off_permissive;
(4)需要在主从服务器上同时关闭GTID功能。
set global enforce_gtid_consistency=off;
set global gtid_mode=off;
(5)把gtid_mode=off,enforce_gtid_consistency=off写入配置文件中。下次重启直接生效。

测试:
在t1表中插入数据:
insert into t1 select 9900;
同步成功,主从库执行show master status\G发现GTID没有增加,证明切换成功。

二,传统复制切换为GTID

实施过程如下
(1)在主从库上同时修改参数enforce_gtid_consistency=warn,确保error log中不会出现警告信息,如果有,需要先修复,才能往后继续执行。
set global enforce_gtid_consistency=warn;
(2)在主从服务器上把enforce_gtid_consistency 改为On,保证GTID一致性。
(3)在主从服务器上同时调整GTID模式为off_permissive.
set global gtid_mode=off_permissive;
(4)在主从服务器上同时调整GTID模式为on_perssive.
set global gtid_mode=on_permissive;
(5)确认从库Ongoing_anonymous_transaction_count=0,意味着没有等待的事物,可以直接进行下一步操作了。
show global status like ‘ongoing%’;
±------------------------------------±------+
| Variable_name | Value |
±------------------------------------±------+
| Ongoing_anonymous_transaction_count | 0 |
±------------------------------------±------+
1 row in set (0.00 sec)
(6)主从库上同时执行gtid_modex=on;
set global gtid_mode=on;
查看gtid参数是否都是开启状态:
show variables like ‘%gtid%’;
±---------------------------------±----------+
| Variable_name | Value |
±---------------------------------±----------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | |
| session_track_gtids | OFF |
±---------------------------------±----------+
8 rows in set (0.00 sec)
(7)把传统复制改为GTID复制,先要把原有复制停掉,执行stop slave操作,
然后执行change master_to master_auto_position=1;
stop salve;
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.136.138
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 234
Relay_Log_File: localhost-relay-bin.000014
Relay_Log_Pos: 367
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: No
Slave_SQL_Running: No

Retrieved_Gtid_Set:
Executed_Gtid_Set: 807de6b3-c4d3-11e7-954f-000c29b46750:7-8

change master to master_auto_position=1;
start slave;

然后插入数据进行验证。

GTID使用中的限制:

GTID复制是针对事物来说的,一个事物针对一个GTID,
好多的限制就在于此
(1)不能使用create table tb_name select* from tb_name.
(2) 在一个事物中既包含事物表的操作又包含非事物表。
(3)不支持create tempprary table or drio temporary table 语句。
(4)使用GTID复制从库跳过错误时,不支持sql_slave_skip_counter参数的语法。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值