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

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

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