记一次Mysql8 Galera集群delete语句不同步问题
  6Fbi72XYb1Bc 2023年11月02日 26 0

背景

公司使用Mysql8.0.32版本,部署了Galera集群,包含三个主节点,实现了多主结构。通过两台Nginx进行请求转发,随机将请求分配给后端的三台Mysql节点。然而,在10月24日下午,业务同事发现系统出现了一些脏数据,通过堡垒机连接Mysql后手动清理了一些脏数据,但过段时间发现清理的脏数据又再次出现了。


排除思路

由于我不是专业的DBA,首次遇到这种情况,根据业务人员的描述,应该是从堡垒机连接的节点上执行了delete操作,但另外两个节点没有同步执行delete。这导致另外两个节点存在脏数据。过了一段时间,集群将这些脏数据同步回原本执行delete操作的节点,从而出现了删除的脏数据再次出现的问题。

我检查了三个节点的集群状态,发现集群状态正常。然而,在检查三个节点服务器的时间同步时,发现它们并未同步。经过进一步检查,发现服务器与时间服务器之间的网络连接不通。经过同事协助开通相关策略后,网络连接恢复正常。然而,集群的delete操作仍然无法同步。

在网上查阅了大量关于galera的资料,却发现相关内容相对较少。偶然间,我看到了一篇关于binlog-format模式的帖子,它对ROW、MIXED、STATEMENT三种模式之间的差异做了一些介绍。随后,又看到另一篇帖子,作者使用了Mysql的主从集群,并遇到了主库delete操作后从库不同步的问题。巧合的是,这位作者使用的也是MIXED模式,他将其修改为ROW模式后,delete操作便恢复了同步。抱着姑且一试的心态,我决定尝试这个方法。考虑到我们使用的是多主集群,仅仅修改binlog-format的模式并重新启动Mysql服务并不会对业务产生影响。于是,我逐个将Mysql节点的binlog-format模式修改为ROW模式并重新启动服务。经过测试,所有节点的delete操作都实现了同步。

最后,希望有经验的大佬能够简要说明一下这个问题的根本原因是啥,感谢。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月31日   32   0   0 MySQL索引
  xaeiTka4h8LY   2024年05月31日   44   0   0 MySQLSQL
  xaeiTka4h8LY   2024年05月31日   28   0   0 字段MySQL
  xaeiTka4h8LY   2024年05月31日   38   0   0 MySQL数据库
  xaeiTka4h8LY   2024年05月17日   46   0   0 MySQLgithub
  xaeiTka4h8LY   2024年05月17日   37   0   0 MySQL数据库
6Fbi72XYb1Bc