V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lemonJ
V2EX  ›  数据库

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

  •  
  •   lemonJ · 2021-05-19 00:18:15 +08:00 · 1365 次点击
    这是一个创建于 1289 天前的主题,其中的信息可能已经有所发展或是发生改变。

    情况是这样的:

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

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

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

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

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

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

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

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

    wmhack
        1
    wmhack  
       2021-05-19 00:28:42 +08:00 via iPhone   ❤️ 1
    mysql + canal
    xupefei
        2
    xupefei  
       2021-05-19 06:23:14 +08:00 via iPhone   ❤️ 1
    xupefei
        3
    xupefei  
       2021-05-19 06:24:55 +08:00 via iPhone
    写个定时任务运行 stop slave 和 start slave 也可以。
    beitayongguo
        4
    beitayongguo  
       2021-05-19 09:52:39 +08:00
    上云数据库是不是能解决这个问题啊,存储买阿里云之类的
    maxbon
        5
    maxbon  
       2021-05-19 14:24:38 +08:00   ❤️ 1
    mysql 双主啊
    evil0harry
        6
    evil0harry  
       2021-05-19 18:45:37 +08:00   ❤️ 1
    1.mongo 主从
    2.mongoshake 监听
    lemonJ
        7
    lemonJ  
    OP
       2021-05-19 23:19:35 +08:00
    @beitayongguo 内网服务,两边通过 VPN 去同步的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1200 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 23:20 · PVG 07:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.