V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
liangcj
V2EX  ›  程序员

请教一下各位佬,关于 ETL 落地技术方案的讨论

  •  1
     
  •   liangcj · 2025 年 8 月 4 日 · 2207 次点击
    这是一个创建于 160 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:客户的数据源有多种,且现有存量数据在 6 亿级别,我需要同步它的数据到我这边的物理表,理想的是,首次全量同步,而后增量实时同步。

    现状 demo 方案:拿 mysql 来举例:
    已经实现了 mysql -> flink cdc -> kafka -> mysql
    基于 400w 的数据量,监测到任务启动那会,对客户的表 mysql-source cpu 骤然爬升 20%+。

    现在顾虑:
    1. 6 亿的数据量,到时候直接全量同步会对客户的数据库造成很大压力,说不定会搞崩。
    2. 也调研过 datax ,但是如果使用这个估计就是按照 id 每日分批跑,跑完还得衔接 flink cdc 实现流数据的同步。
    3. 使用 flink cdc 需要开启 binlog 权限,可能客户不愿接受这点要求。
    4. ld 现在可接受不是实时同步,唯一要求就是不能对客户数据库造成压力。

    各位佬,有其他更好的方案说说嘛?感谢!
    19 条回复    2025-08-05 18:41:03 +08:00
    Fastmail
        1
    Fastmail  
       2025 年 8 月 4 日
    flink cdc 我记得可以 source 和 sink 可以控制 batchsize ,包括 channel 也可以控制 transactionCapacity
    只要减少传递的 event 条数应该就可以吧
    flmn
        2
    flmn  
       2025 年 8 月 4 日
    客户这个库,就没个从库么?
    Fastmail
        3
    Fastmail  
       2025 年 8 月 4 日
    datax 其实也可以控制并发以及并行处理的记录数和字节数,可以搜搜,具体记不清了
    liangcj
        4
    liangcj  
    OP
       2025 年 8 月 4 日
    @flmn 因为客户是不确定因素,所以只能往最坏结果想,就当没有。
    weenhall5
        5
    weenhall5  
       2025 年 8 月 4 日
    存量数据可以分批跑,考虑后续数据如何可持续
    liangcj
        6
    liangcj  
    OP
       2025 年 8 月 4 日
    @Fastmail 是有的,我上面 400w 就是设置了这些参数,10min 中跑完。cpu 爬升 20+。datax 也是可以设置并发量和处理记录、字节数。就是担心量太大了,还是会对客户有影响,而且 datax 是单机的,不支持分布式。
    liangcj
        7
    liangcj  
    OP
       2025 年 8 月 4 日
    @weenhall5 现在也是这样考虑,就是分批跑,这个用什么方案比较好点。
    yb2313
        8
    yb2313  
       2025 年 8 月 4 日
    要求无压力就只能慢慢传吧, 在小小的数据库里挖呀挖呀挖
    fruitmonster
        9
    fruitmonster  
       2025 年 8 月 4 日
    @liangcj #6 那就再拉长呗,10 分钟,CPU 爬升 20+,那就 20 分钟、30 分钟、40 分钟,反正只全量这一次
    beihanggmj
        10
    beihanggmj  
       2025 年 8 月 4 日
    分批次慢慢导出数据,用时间换算力。方案有很多,比如设置一个秒级别的 crontab 任务,一秒导出 1 万条这样的形式,时间间隔和单次 batch_size 可以按时间交付时间/需求设置具体的变量满足客户要求。
    aarones
        11
    aarones  
       2025 年 8 月 4 日
    按照需要,一个任务只跑几个库或者几个表就行了,这点数据没多少,找个凌晨 3 点跑一下就完事
    min
        12
    min  
       2025 年 8 月 4 日
    参数设置好,100 分钟跑完就无压力咯
    cccssss
        13
    cccssss  
       2025 年 8 月 4 日
    去客户机房硬盘对拷一份,然后跑增量
    glacer
        14
    glacer  
       2025 年 8 月 4 日
    如果不开 binlog ,实时同步基本就做不了了。
    只能分批次在深夜启动任务做全量同步,全量结束后,同样在深夜拉最新一天的数据做日增量即可。
    cloudzhou
        15
    cloudzhou  
       2025 年 8 月 4 日
    你这个应该要确定下方案先,尤其是否 binlog ,这个方案就差别很大了
    haimianbihdata
        16
    haimianbihdata  
       2025 年 8 月 5 日
    不开 binlog ,实时很难搞。后续敲定了什么方案
    coderYang
        17
    coderYang  
       2025 年 8 月 5 日
    能否先 mysqldump 一份数据下来进行消费,同时记录时间点,新数据则通过 binlog 来实现呢? 消费 binlog 文件不会对 mysql 有啥影响吧
    liangcj
        18
    liangcj  
    OP
       2025 年 8 月 5 日
    @coderYang dump 的时候也会对客户的数据库造成很大压力。我本地 dump 自己的 6 亿条数据,cpu 骤然爬升 80%+,而且我本地还是没有其他业务操作。
    Grand
        19
    Grand  
       2025 年 8 月 5 日
    没有 binlog 感觉只能业务上双写,但是双写就不能保持数据一致性。只能说服客户开启 binlog
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   933 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:40 · PVG 06:40 · LAX 14:40 · JFK 17:40
    ♥ Do have faith in what you're doing.