MySQL OCP888题解043-GTID模式下如何解决主键冲突问题

1、原题

1.1、英文原题

A simple master-to-slave replication is currently being used. This information is extracted from the SHOW SLAVE STATUS output:

You execute a “SHOW CREATE TABLE mytable” on the slave:

You have issued a STOP SLAVE command. You have determined that it is safe to skip the transaction in this case. One or more statements are required before you can issue a START SLAVE command to resolve the duplicate key error.
Which statement should be used?
A、SET GTID_NEXT=“CONSISTENCY”;BEGIN; COMMIT;SET GTID_NEXT=“AUTOMATIC”;
B、SET GTID_NEXT=“5da6b4f5-6f60-11e8-b2d6-0010e05f3e06:8”; BEGIN; COMMIT;SET GTID_NEXT=“AUTOMATIC”;
C、SET GLOBAL SQL_SKIP_SLAVE_COUNTER=1
D、SET GLOBAL enforce_gtid_consistency=ON
E、SET GTID_EXECUTED=“5da6b4f5-6f60-11e8-b2d6-0010e05f3e06:8”;

1.2、答案

B

2、题目解析

2.1、题干解析

本题考察的是GTID复制模式下,当出现主键重复问题时,如何解决。

3、知识点

3.1、知识点1:GTID模式下跳过一个事务的方法

如果复制由于复制的事务中的事件问题而停止,可以通过跳过复制中的失败事务来恢复复制。在跳过一个事务之前,确保复制的I/O线程和复制的SQL线程都已停止。

  1. 首先,你需要确定导致错误的复制事件。错误的细节和最后成功应用的事务都记录在性能模式表replication_applier_status_by_worker中。你可以使用mysqlbinlog来检索和显示在错误发生时被记录的事件。另外,你可以在副本上发出SHOW RELAYLOG EVENTS,或者在源上发出SHOW BINLOG EVENTS,然后在输出中搜索以该GTID开头的事务。
  2. 跳过有GTIDs的事务
SET GTID_NEXT='aaa-bbb-ccc-ddd:N';
BEGIN;
COMMIT;
SET GTID_NEXT='AUTOMATIC';

官方参考文档

4、总结

  1. GTID复制时遇到事务问题时,可以通过跳过一个事务的方法解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值