mysql主从不同步,不复制的解决办法

mysql的从库,检查一个表的最新的记录,发现主从不同步了 。主库的数据比从库的数据要多很多。
通过show slave STATUS;命令检查,发下如下的错误:

Error 'Cannot add or update a child row:
 a foreign key constraint fails (`mls`.`t_feedback`, CONSTRAINT `Reft_user121` FOREIGN KEY (`fk_user_id`)
 REFERENCES `t_user` (`pk_id`))' ON QUERY . 
DEFAULT DATABASE : 'mls'.
 QUERY : 'INSERT INTO mls.t_feedback SET fk_user_id= 93213,fk_parent_id=1,
f_context=' XXXXXX? ' ,
f_create_time=20180508,f_creater=' XXXXXX ',
f_title=' APP问题 ',
f_reply=0'

最终的解决方案可选:
1、查看Master最新的position,将其最为slave复制的起点。
这种思路体现的是过去的不一致既往不咎,现在保持同步即可。看起来,这个思路和恢复主从库数据的一致性的初衷有所违背,但这种方法,简单,高效,在测试环境,对历史数据要求不高的场景中可使用。
2、必须严格恢复主从数据一致的做法。
2.1备份主库数据,并在从库上恢复,在历史数据一致性的基础上开启同步,但这种方法比较麻烦,必须在主库上执行锁表操作,阻止客户端对于表数据的更新操作,而且在数据量大的情况下,备份也是个耗时的工程。其实,这种方法在实际生产环境中也很少用。
2.2 skip掉相关事务
把产生错误的那一步,直接跳过去。

如何操作:
1、停止slave服务
命令:stop slave;
2、设置跳过多少个事务
命令:SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
3、开启slave服务
命令:start slave;

Error 'CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.' ON QUERY . DEFAULT DATABASE : 'mls'. QUERY : 'create table cmpt_main_20180518 as select pk_id as cmpt_id,f_name as cmpt_name,'' as cmpt_en_name,str_to_date(f_protocol_date,' % Y % m % d ') as cmpt_start_time,str_to_date(f_protocol_date,' % Y % m % d ') as cmpt_end_time,'' as cmpt_province,f_address as cmpt_city,'' as cmpt_address,1 as cmpt_from_platform,1 as is_publish,0 as is_delete,now() as update_time,now() as create_time from t_competition'

这个错误主从同步已经报错,但是没有预警,结果在主库上创建临时迁移数据库的表,然后又删除了,从库对比没有这个表,所以产生了错误。GLOBAL.ENFORCE_GTID_CONSISTENCY = 1:检查错误日志,直到没有错误出现,才能进行下一步

解决的办法:
如何操作:
1、停止slave服务
命令:stop slave;
2、设置跳过多少个事务
命令:SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
3、开启slave服务
命令:start slave;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值