暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

MySQL从库卡主了--读写分离也不能乱读

原创 薛晓刚 2023-03-08
478

     不少使用数据库的公司,数据库都建立主从。无论Oracle、MySQL还是PostgreSQL都会有这类应用。而TiDB这种分布式数据本身是一套高可用。当然我刚才提到的Oracle、MySQL还是PostgreSQL也早就有了自己的分布式。我们今天还是说主从的这种架构。一般主从可以起到硬件故障的灾备,但是现在的硬件情况,很少硬件损坏。大家用从库做读写分离或者说分析的也很多。(如果说现在谁家的硬件天天坏,天天进行灾备切换实操的)


     今天说一个故事,我的一个学员问我她们遇到的问题:上来给我一张图。我看到这个描述第一次见。只能说明踩坑还不够。然后看到她图中主从差了28000多秒。我说这种情况基本上指望同步恢复不现实了。(以我以前经验这话还能追回来的概率不大,不过最后结果还是反转的)


然后她不经意间截图了这个。我看到了“invalidating query cache entries”那么说明从库在刷缓存的时候卡主了。我开始以为是insert没提交。不过实际情况是她一主三从的数据库上,一主和两个从上都是好的,已经插入了。那么就排除了各种我能想到的问题。只有一种可能了,有人在这个库上执行大查询,导致内存竞争,卡主了。事务提交不下去。


     随机让她检查这个从库上有没有大查询。一查果然有。那么结果就是杀掉这几个大查询,或者把从库重启一下。最终采用了kill会话的操作,解决了。那几个杀掉的我这里就不贴了。大致是select distinct x,y,z.......... from t     重点是没有where条件。而且是不止一个会话这样执行,然后就没有然后了。对于这样全表遍历且排序的并发执行,我见过几次这种都造成故障了(当时是主库)。这个由于是人为查询的从库,估计现场没有造成影响,但是确实是问题。

    主从产生延迟的几种可能性

1、主大事务从在等
2、从串行执行忙不过来
3、从执行的事务阻塞了主的同步事务

    有时候不能因为是从库,就可以无节操的查询,比如全量操作数据,也是有可能把从库搞瘫痪的。

最后修改时间:2023-03-09 12:18:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论