mysql slave运行慢_CENTOS MYSQL复制下slave严重延迟的分析和处理

昨晚在生产环境刷数据,执行了一个全局表的update table_test set XK = 'PT' where (XK = '' or XK is null);当时语句没啥问题,测试了下,执行单库的时间在6s左右,没太在意,结果今天发现所有的从库严重延迟,全都卡在这条事务的binlog回放上了。

分析原因:

尽管我们使用的是基于组的多线程复制,线程配置为4个,但是他对无序innodb表(堆)或者大事务的回放是非常慢的。我们日常工作种应该避免这个问题。很不幸,这个表publicity_licensing完全符合了堆表的概念,无主键、无唯一索引,完全就是一个堆,无论任何操作都是性能非常差的。在复制过程种更是导致了从库hang了。

解决思路:

1、 重做主从,很明显,100多个G的数据重做耗时非常长;

2、 想办法跳过该事务,然后再关闭会话级binlog的情况下,手动执行数据的更新。很明显,第二个方法可行,也是最不耗时的解决办法。

解决步骤:

1、 关闭session级binlog写入:set session sql_log_bin = off; 并确认是否真正关闭;

2、 从机每个库分别手动执行表的更新语句。退出

3、 从机上重新登陆mysql,执行stop salve;

4、 从机上杀掉正在执行的binlog回放线程;

5、 从机上show slave status \G 找到执行的binlog文件及Executed_Gtid_Set项,找出已经执行的ID

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值