暂无图片
数据库MGR宕机后重启顺序异常导致的主从库数据不同步
我来答
分享
暗恋谢大脚
2021-10-18
数据库MGR宕机后重启顺序异常导致的主从库数据不同步

公司的一个项目,MGR采用的是一写多读的单主模式,用proxysql处理读写分离,环境是centOS7.6,数据库版本是5.7.32。

MGR在正常情况下使用没有任何问题,但是问题出在宕机之后重启,如果重启顺序正常(先主后从),也没有问题,从会自动同步主的数据。

但是如果是启动顺序异常,之前的主节点现在以从的身份加入到集群中,就会经常出错。我做了一个示意图:


一开始两个数据库都只有1,2两条数据。

s1断开之后,s2变为主继续使用,然后加了一条数据300。

这时候s2宕机了,这时候需要重启s1和s2,如果s1是从s2是主,没问题,数据自动同步。但是反过来,s1主,s2从,s1不会更新自己的数据。

在t5这个时间段之后,s2比s1多一条数据,但是此时集群中已经主从不同步了。

想问问大家有没有方法避免或者解决方案,或者是数据库同步方案,或者是好用的数据库中间件解决或者避免这个问题。

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Cui Hulong

1.mysql shell 本身有命令启动前进行检查动作。

    dba.rebootClusterFromCompleteOutage

2.group_replication_exit_state_action 当集群实例离开组的时候对应策略,比如ABORT_SERVER,OFFLINE_MODE,READ_ONLY 状态。

建议多主就不要使用了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
有啥索引建议的工具,可以使用到社区版mysql上,原来美团有个sqladvisor
回答 1
您好,SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合函数、子查询
如何在mysql实现Oracle 的to_number函数?
回答 1
已采纳
mysql 只有简单的cast 转换函数,没有oracle tonumber 这么强大的功能。更强大的功能可以在应用后端实现。
MySQL 8.0.1 之后是把 WITH CUBE 取消掉了吗,提示语法错误
回答 1
已采纳
mysql 一直没有实现cube吧。你用withrollup 加unionall实现。这个是mysql 的反馈。https://bugs.mysql.com/bug.ph
sqlsrever不用维护吗?
回答 7
用维护,而且我感觉维护起来比mysql和pg难。只不过国内用的少
无法通过Dbeaver连接到MySQL RDS。收到连接超时的错误消息。通讯链路故障
回答 1
已采纳
Dbeaver版本有点低了我用21的版本,连接是没有问题的
MySQL 8.0 innodb_pool_buffer 设置物理内存的50%(4g), 为什么用一段时间后内存就占到系统90%以上?
回答 1
请问您判断这个占据系统的90%的依据是什么?如果说这样岂不是这个没有用?默认128M,也可以到90%?一般来说不会发生这样的。还是看看具体数据分析一下
mysql8如何利用ibd文件获取建表语句?
回答 4
直接利用mysql8自带的工具进行解析ibd文件就可以找到建表语句。mysqlfrmserverroot:123456@localhost:3306port3336vvv。。。。 
mysqldump 能不能导出表结构,并在结尾加GO?
回答 1
是只能导出表结构mysqldumpurootpP3306skiptzutctriggersdefaultcharactersetutf8mb4singletransactionmasterdata2s
有没有什么方法可以实时检测 mysql 数据库中某个值是否发生改变?
回答 1
触发器?
mysql一个问题,自己拼接出来的动态sql怎么执行,下述写法只能执行一条,加循环也不行?
回答 2
已采纳
这里的now()未生效,被包在字符串里了select@Sql:concat...now()