作家
登录

对MySQL数据库复制中断的处理

作者: 来源: 2017-10-24 09:09:26 阅读 我要评论

在复制中,有时会因为复制报错,而中断复制。平日是因为一个SQL语句在主库履行时是正常的,但同步到大年夜库时,因为各类原因,找不到对应的数据,造成履行SQL掉败,报出复制缺点。下面重要写了几个常见的缺点。

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!


对MySQL数据库复制中断的处理

媒介

复制中断的情况和处理

复制中断的情况:

  • 1062缺点:在写入数据使,大年夜库已存在了。多出现自增长ID已存在。
  • 1032缺点:大年夜库出现少数据,update、delete时,找不到响应的记录。
  • 其他:DDL操作时报错

对这些情况的处理:

  • 碰到该问题,要想到要如何知足复制,而不是跳过该事务;不建议跳过缺点,碰到缺点应当修改过来,再连接主库复制,不然大年夜库的数据会越来越不一致!
  • 手工修复操作有些慢,可以针对1062和1032缺点,写一个主动化监控改┞俘脚本。
  • 留意:若经常数据不一致,选择营业低放弃,考验一次数据(pt-table-checksum),查看是否数据一致,若检查出太多的数据不一致,该大年夜库就弗成再用了,再创建一个大年夜库!

常见的复制缺点

【缺点码-1062】

具体操作:

  • 定位到该事物
    • 传统复制:Exec_Master_Log_Pos 与 last_error中的end_log_pos 中心的事务
    • GTID复制:executed_gtid_set : xxxxx:1-5 ,即第6个事务报错了。
    • master:mysqlbinlog -vv --base64-output=decode-rows --start-position ……
  • 在slave上删除该条数据,然后连接复制
    • > set sql_log_bin=0; # 先禁止当前会话的操作记录写到binlog
    • > delete from xn_db.t_order_produce where id=35197;
    • > set sql_log_bin=1; # 恢复正常
    • > start slave sql_thread; # 启动SQL线程

【缺点码-1032】

1032缺点 分为: update缺点 和 delete缺点。

update 处理操作:

  • 在主库上获掏出来主键的值(不须要具体恢复出来),只要知足SQL履行成功即可。

update 具体操作:

  • 定位到该事物
    • 传统复制:Exec_Master_Log_Pos 与 last_error中的end_log_pos 中心的事务
    • GTID复制:executed_gtid_set : xxxxx:1-5 ,即第6个事务报错了。
    • master:mysqlbinlog -vv --base64-output=decode-rows --start-position ……
  • 将没有的数据创建出来,只相符缺点事务履行成功即可
    • > set sql_log_bin=0;
    • > insert into xn_db.t_mes(id) values(35592);
    • > set sql_log_bin=1;
    • > start slave sql_thread;

delete 处理操作:

  • 因为大年夜库没有该数据,致使删除掉败,可以跳过该缺点,因为跳过该删除事务相当于不履行该delete语句,和在大年夜库膳绫腔履行之前是一样的,那些数据都不会存在于大年夜库中。

处理操作:

  • 处理这种情况,须要和营业协商,或在公司内形成一个规定,碰到这种情况要如何做(在大年夜库将这条反复数据删除照样弥补到主库)。
  • 平日,在大年夜库删除该条数据,让复制持续进行。
  • 应用pt-slave-restart来修复问题,它会会跳过缺点,建议先处理缺点,才可以包管数据的一致性

delete 具体操作:

  • 传统复制:
    • > stop slave;
    • > set global sql_slave_skip_counter=1; # 跳过一个事务
    • > start slave;
  • GTID复制:
    • > stop slave;
    • > set gtid_net='xxxxx:6' # 跳过报错事务6
    • > begin;commit; # 履行一个空事务,即GTID为6的事务
    • > set gtid_next='AUTOMATIC';
    • > start salve; 

【编辑推荐】

  1. 法度榜样员漫画,数据库注入式进击
  2. 玩抓MYSQL数据库!SQL敕令大年夜全!
  3. 数据库的设计应推敲哪些设计原则?
  4. 应用数据库SA暗码登录修改体系治理员暗码
  5. 硬件是若何影响数据库的成长
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  访三十多家云厂商 对于混合云的未来,他们这样说

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!企业上云,一向都是异常火爆的话题,选择私有云可保障安然性,公有云可放弃自身办事器,而混淆云是一个取中的办法。混淆云>>>详细阅读


本文标题:对MySQL数据库复制中断的处理

地址:http://www.17bianji.com/lsqh/38101.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)