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

求不同数据库之间的数据同步方案

  •  
  •   B9hkc · 3 天前 · 1388 次点击

    问题背景

    • 可能会用到的部分数据库:
      • PostgreSQL -> Gbase
      • PostgreSQL -> PostgreSQL
      • MySQL -> PostgreSQL
      • Gaussdb -> Gbase
    • 数据量:每张表 1000 万~10 亿,部分表数据量在 25 亿+以上的量级

    当前使用方案

    • xxl_job + datax

    遇到的问题

    • 稳定性:
      • 部分表做增量任务不会结束。如某张表有 10 亿的数据量,之前已经做过全量同步的任务了,现在做增量同步,仅同步最近三天的数据,结果读插件一直在读,但最近三天可能没有数据,然后 datax 的读插件一直读出 0 条数据,任务一直不会结束。(不是读插件查询 SQL 的问题,将查询 SQL 取出单独执行可在较短时间内得出结果)
      • 重复插入导致任务失败。源表通过主键保证了每条数据的唯一性,但在 datax 同步时,源表只有唯一的一条数据,目标表也有相同的主键约束,出现该条数据会插入两次,插入第二次时因为数据已经插入过,违背主键约束导致任务直接失败。
      • ......

    以上问题也不是每张表都有,大部分表也都能成功,但是部分表就是遇到这些问题。我的需求需要保证数据同步必须稳定成功,每月做一次全量同步,每天做一次增量同步。请教一下各位大神该问题还有哪些方案可用(开源或商业付费都可以),或者我遇到的问题可能出现在什么地方。谢谢各位大佬

    18 条回复    2024-11-25 12:46:16 +08:00
    BugCry
        1
    BugCry  
       3 天前 via Android
    试试 kettle
    1024potato
        2
    1024potato  
       3 天前
    flink CDC
    ljh2057
        3
    ljh2057  
       3 天前
    Apache SeaTunnel
    COW
        4
    COW  
       3 天前 via Android   ❤️ 1
    定时任务+自定义 datax ,这不就是一个 ETL 平台的功能吗,你们应该有这种 ETL 平台吧,直接找数仓的同事公共讨论方案从数据流和业务上解决是不是会更好。
    l1ch40
        5
    l1ch40  
       3 天前
    tapdata
    LittleControl
        6
    LittleControl  
       3 天前 via iPhone
    4 楼给出答案了,应该找数仓的同事讨论一下能否复用他们 ETL 平台或能力,肯定这方面他们经验更丰富一些
    andytao
        7
    andytao  
       3 天前
    强势关注,袋鼠把你的需求案例纳入测试案例了,将在升级开发中作为验收案例;
    B9hkc
        9
    B9hkc  
    OP
       3 天前
    @BugCry 这个也有在用,目前也是 xxljob+kettle 也做得有
    B9hkc
        10
    B9hkc  
    OP
       3 天前
    @1024potato 好的,我了解一下
    B9hkc
        11
    B9hkc  
    OP
       3 天前
    @ljh2057 谢谢,我了解一下
    B9hkc
        12
    B9hkc  
    OP
       3 天前
    @COW 谢谢大佬,我去找相关的部门同事交流一下
    B9hkc
        13
    B9hkc  
    OP
       3 天前
    @l1ch40 没用过,我了解一下,谢谢
    B9hkc
        14
    B9hkc  
    OP
       3 天前
    B9hkc
        15
    B9hkc  
    OP
       3 天前
    @andytao #8 关注一下,目前的同步功能是打勾的数据库之间都支持数据同步吗?还是只支持同源数据库的同步呀
    edwardzcn98
        16
    edwardzcn98  
       2 天前
    你问的全量增量捕获稳定性是做变更数据捕获工具测试比较麻烦的事,开源方案 2l 提到了 Flink CDC ,如果觉得不够定制或者需要改可以直接用下面封装的 Debezium
    andytao
        17
    andytao  
       2 天前
    @B9hkc 目前是支持异构的,只是还没有大规模验证的案例,接下来准备从内部视角对它进行升级;
    wnarutou
        18
    wnarutou  
       2 天前 via Android
    问题一:看看日志里面真正执行的 sql 是否加了其他分片条件
    问题二:写入插件应该用 replace 模式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:00 · PVG 13:00 · LAX 21:00 · JFK 00:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.