文档章节

mysql-gtid-跳过事务

zj_oschina
 zj_oschina
发布于 2017/01/25 11:33
字数 283
阅读 47
收藏 0

问题

2017-01-24 09:20:36 44646 [ERROR] Slave SQL: Could not execute Write_rows event on table test.test_table;
Duplicate entry '81354' for key 'PRIMARY', Error_code: 1062;
handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000006, end_log_pos 801050669, Error_code: 1062

插入重复的key,导致插入失败,由于线上是使用双主同步的方式,不能简单的删除掉这条记录,再开始同步,这样做到最后,这个删除操作还会被同步执行,这条记录就真的被删除了

  1. 使用mysqlbinlog命令,查看mysql-bin.000006中end_log_pos=801050669,相应事务的gtid
    mysqlbinlog mysql-bin.000006 --base64-output=decode-rows -v | grep 801050669 -A10B5
    
    # at 801049266
    #170124  8:28:21 server id 224  end_log_pos 801049314 CRC32 0x0bf0f80d  GTID [commit=yes]
    SET @@SESSION.GTID_NEXT= 'cdc2c1ce-dfbc-11e6-85d0-e41d2d5336a4:1943572'/*!*/;
    # at 801049314
    #170124  8:28:21 server id 224  end_log_pos 801049394 CRC32 0xa764097f  Query   thread_id=1013  exec_time=0     error_code=0
    SET TIMESTAMP=1485217701/*!*/;
    BEGIN
    /*!*/;
    # at 801049394
    # at 801050168
    #170124  8:28:21 server id 224  end_log_pos 801050295 CRC32 0x6364d6b6  Table_map: `test`.`test_table` mapped to number 258
    # at 801050295
    #170124  8:28:21 server id 224  end_log_pos 801050669 CRC32 0x897bf9ab  Write_rows: table id 258 flags: STMT_END_F
    
    
  2. 登录备库
    --由于gtid是连续的,所以只能通过注入空事务的方式跳过出错的事务
    stop slave;
    set gtid_next='cdc2c1ce-dfbc-11e6-85d0-e41d2d5336a4:1943572';
    begin;commit;
    set gtid_next='automatic';
    start slave;
    

© 著作权归作者所有

zj_oschina
粉丝 1
博文 54
码字总数 14111
作品 0
厦门
程序员
私信 提问
MySQL 5.7 基于 GTID 的主从复制实践

运维之美 在 「MySQL 5.7多源复制实践」 一文中我们讲解了 MySQL 5.7 新特性多源复制的实现方法。今天我们来讲讲 MySQL 5.7 的另一个新特性基于 GTID 的主从复制实现。 什么是GTID Replicat...

rootliu
07/09
36
1
GTID复制模式手动跳过复制错误

当备库复制出错时,传统的跳过错误的方法是设置sqlslaveskip_counter,然后再START SLAVE。 但如果打开了GTID,就会设置失败: mysql> set global sqlslaveskip_counter = 1; ERROR 1858 (HY...

SANSOM
2014/06/03
4.4K
0
与MySQL传统复制相比,GTID有哪些独特的复制姿势?

作者介绍 前言 GTID(Global Transaction ID)是MySQL5.6引入的功能,可以在集群全局范围标识事务,用于取代过去通过binlog文件偏移量定位复制位置的传统方式。借助GTID,在发生主备切换的情况...

陈华军
2016/12/13
0
0
MySQL5.6 新特性之GTID

背景: 概念: 4e659069-3cd8-11e5-9a49-001c4270714e:1-77 更具体的说明见官方说明。 GTID意义: 上面图的意思是:Server1(Master)崩溃,根据从上show slave status获得MasterlogFile/ReadM...

舞艺超炫
2018/01/10
0
0
MySQL 传统复制与 GTID 复制原理及操作详解

MySQL 复制在业界里有叫:mysql 同步,ab 复制等。专业名称就是叫:复制。 复制是单向的,只能从 master 复制到 slave 上,延时基本上是毫秒级别的。 一组复制结构中可以有多个 slave,对于 ...

技术小能手
2018/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
3
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部