mysql数据库复制中断的情况和处理

265人已阅读 2018-08-22 17:52:13
导读 由于从库没有该数据,致删除失败,我们可以跳过该错误,那时是因为跳过该删除事务相当于不执行该delete语句
UI设计培训 java开发培训 大数据开发培训 web前端开发培训 ocp认证培训 产品经理培训 交互设计培训 MYSQIOC培训 平面设计培训 网页设计培训 ps培训 数据分析挖掘培训 python人工智能培训

新闻详情

2018-08-22 17:52:13

mysql数据库复制中断的情况和处理

  由于从库没有该数据,致删除失败,我们可以跳过该错误,那时是因为跳过该删除事务相当于不执行该delete语句

    在复制中,有时会因为复制报错,而中断复制。通常是因为一个SQL语句在主库执行时是正常的,但同步到从库时,因为各种原因,找不到对应的数据,造成执行SQL失败,报出复制错误。下面主要写了几个常见的错误。
  复制中断的情况和处理
  复制中断的情况:
  1062错误:在写入数据使,从库已存在了。多出现自增长ID已存在。
  1032错误:从库出现少数据,update、delete时,找不到相应的记录。
  其他:DDL操作时报错
  常见的复制错误
  【错误码-1062】
  处理操作:
  处理这种情况,需要和业务协商,或在企业内形成一个规定,遇到这种情况要怎样做(在从库将这条重复数据删除还是补充到主库)。
  通常,在从库删除该条数据,让复制继续进行。
  使用pt-slave-restart来修复问题,它会会跳过错误,建议先处理错误,才可以*数据的一致性
  具体操作:
  定位到该事物
  传统复制: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语句,和在从库上没执行之前是一样的,那些数据都不会存在于从库中。

  以上就是海文国际教育小编为大家精心整理出来的内容啦,更多资讯记得定期关注我们哦!
上一篇: 数据科学的基本内容 下一篇: java高级知识

相关文章

推荐课程

查看全部课程
重庆海文国际教育

重庆海文国际教育

渝北校区

查看全部校区 进入官方主页