请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

10-1章节提问

老师,您好,对于涉及到资金的业务系统,老师在视频中说即使读的话也需要去读主库,而不是备库,这是因为主备之间的同步可能存在延时。在多机房和多中心(上海,北京)这两种情况下,如果主库所在的机房或者数据中心挂掉了,如何保证挂掉的主库的数据能够完整的备份到下一个即将被提升为主库的备库中?

正在回答 回答被采纳积分+3

1回答

Jimin 2019-07-08 10:09:40

你好,正好现在在做异地多活,跨本地机房同步还算很快,跨不同机房可能会上升到几百ms甚至1s以上,你说的那种情况严重的时候还是出现数据“孤岛”(故障后,master已自动转移,而他自己还以为自己是master,出现两个master并存,而其他从库已经更改认可的主库为新主库了),这里还有一些其他复杂的情况,比如压测把主库压宕机(上半年遇到两次,这时不一定会出现主库替换),可以明确的是,这种现象要考虑的事情很多,有时甚至要dba干预去解决双主问题,这时要不要做故障期间数据同步已经是个问题了,因为可能要同步的数据已经被新的更新覆盖了,再覆盖就是错的了。
而你这个问题回答还要从底层binlog的配置说起,不知道该你懂得数据库同步知识是否已学明白,建议你把现在你学会的简单介绍一下,否则这个问题我不晓得该从什么层面解答较好,因为光讲binlog同步机制就要好久。
这里,除了dba方面的事情,介绍一下业务方面针对这种问题的考虑:
1、接口幂等,真出问题了把故障期间有问题的请求重复提交处理
2、基于最底层的数据出发,通过离线对账、实时对帐等来检查数据层面是否有不一致(丢失),自动修正或导出异常数据人工修正,数据是满足业务逻辑的话,就可以保证上层看到的是和底层是一致的,最差就是当作故障前执行失败重新执行一次就好了。
3、设计层面考虑极端情况时对数据的检查和补偿逻辑。db出问题时对上游的根本表现时出现异常,这时的异常处理就显得特别关键,我们也是在这方面投入了大量精力。

0 回复 有任何疑惑可以回复我~
  • 提问者 G91 #1
    老师,您好,因为对数据库同步这方面的知识自己确实还蛮菜的,7月30日前我会把mysql数据库方面的知识存储好,到时候我会根据自己的学习情况,再提出更为确切的问题与老师探讨,非常感谢老师的耐心解答
    回复 有任何疑惑可以回复我~ 2019-07-08 21:35:35
  • Jimin 回复 提问者 G91 #2
    嗯,好的,其实你懂的越多,我可以给你扩展的就越多,我也可以更好的去发挥。
    回复 有任何疑惑可以回复我~ 2019-07-08 23:01:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信