两个数据库互相定期增量同步数据有什么解决方案?

2021-05-19 00:18:15 +08:00
 lemonJ

情况是这样的:

有一个需求,需要在 A 、B 两地同时提供服务( HTTP ),但是两地之间网络质量很差,延迟很高、并且经常有断线的情况,断线时长可能长达几小时,偶尔甚至会达到几天。如果只部署一个服务的话,则另一个地方的用户就会访问困难。

由于对两地数据实时性要求不高,所以考虑在 A 、B 两地分别部署一个 HTTP 服务端+一个数据库,两地的数据库做定期双向同步。

不考虑高可用,就两地分别单机部署就行,不需要考虑一边服务挂了切换到另一边做备用服务。(最好是服务挂了就挂了,立马人工去重启)

由于网络质量差,所以最好是增量同步、传输数据量越小越好。同步最好可以是自动的,或者可以用脚本自动跑的,网络原因同步失败,可以下次再重试。

对数据库的操作比较多的是插入,修改多以 inc 之类的操作为主,但也有少量的直接赋值更新的操作。数据删除采用的是标记删除字段的形式进行假删除,所以可以理解为不存在数据删除操作。

目前使用的是 MongoDB 数据库,但是也可以考虑切换为其他能满足需求的数据库。

请问,有什么现有的技术可以实现这样的一个服务形式吗?或者说这属于是什么同步方式、同步技术?

简单看了下 MongoDB 的“双活模式”,貌似不太能满足定时同步的需求?

1254 次点击
所在节点    数据库
7 条回复
wmhack
2021-05-19 00:28:42 +08:00
mysql + canal
xupefei
2021-05-19 06:23:14 +08:00
xupefei
2021-05-19 06:24:55 +08:00
写个定时任务运行 stop slave 和 start slave 也可以。
beitayongguo
2021-05-19 09:52:39 +08:00
上云数据库是不是能解决这个问题啊,存储买阿里云之类的
maxbon
2021-05-19 14:24:38 +08:00
mysql 双主啊
evil0harry
2021-05-19 18:45:37 +08:00
1.mongo 主从
2.mongoshake 监听
lemonJ
2021-05-19 23:19:35 +08:00
@beitayongguo 内网服务,两边通过 VPN 去同步的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/777790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX