代码改变世界

gtid复制中跳过错误事务的另一种方法

  abce  阅读(185)  评论(0编辑  收藏  举报

gtid复制中跳过错误事务的另一种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
replica1 > select @@gtid_mode;
+---------------------+
| @@gtid_mode         |
+---------------------+
on                 |
+---------------------+
replica1 > stop slave;
query ok, 0 rows affected (0.02 sec)
  
replica1 > set gtid_mode=on_permissive;
query ok, 0 rows affected (0.04 sec)
  
replica1 > set global sql_slave_skip_counter = 1;
query ok, 0 rows affected (0.00 sec)
  
replica1 > start slave;
query ok, 0 rows affected (0.00 sec)
  
replica1 > pager grep seconds
pager set to 'grep seconds'
replica1 > show slave status\g
        seconds_behind_master: 0
1 row in set (0.00 sec)

关闭主从复制,并将gtid_mode设置成on_permissive(新的事务是gtid事务,复制事务可以是匿名事务、也可以是gtid事务)。使用sql_slave_skip_counter=1跳过事务,然后重启复制。

一旦复制同步后,我们就需要将gtid_mode改会on。

1
2
3
4
5
6
7
8
9
replica1 > select @@gtid_mode;
+---------------------- ----+
| @@gtid_mode               |
+---------------------------+
| on_permissive             |
+---------------------------+
  
replica1 > set global gtid_mode=on;
query ok, 0 rows affected (0.04 sec)


要想将gtid_mode从on设置成on_permissive,必须将sql_slave_skip_counter设置成0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
replica1 > stop slave;
query ok, 0 rows affected (0.02 sec)
  
replica1 > set gtid_mode=on_permissive;
query ok, 0 rows affected (0.04 sec)
  
replica1 > set global sql_slave_skip_counter = 1;
query ok, 0 rows affected (0.00 sec)
  
replica1 > set global gtid_mode=on;
error 3111 (hy000): set @@global.gtid_mode = on is not allowed because @@global.sql_slave_skip_counter is greater than zero.
  
replica1 > start slave;
query ok, 0 rows affected (0.00 sec)
  
replica1 > set global gtid_mode=on;
query ok, 0 rows affected (0.02 sec)

这样跳过后,主从可能会不一致,这就需要使用pt-table-checksum、pt-table-sync来修复一致性了。

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-12-13 Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
2016-12-13 CentOS系统将UTC时间修改为CST时间
2016-12-13 Tomcat启动时报错,Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext
点击右上角即可分享
微信分享提示