V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
cxzlhr
V2EX  ›  数据库

如何“定时/时时同步 mssql mysql postgresql 数据到统一的表中”

  •  
  •   cxzlhr · Sep 27, 2022 · 2088 views
    This topic created in 1311 days ago, the information mentioned may be changed or developed.

    现有 mssql mysql postgresql 三种数据库,想将其中的几张表按统一格式存储到统一的数据库( mysql postgresql 未定)的某张表中,

    具体需求:想将门禁记录、考勤记录、消费机的记录收集起来做考勤,所以原表中数据只有新增,不存在修改情况

    暂时能想到的方案有 1 、定时循环同步,如 1 小时或 5 分钟,将这间隔的几分钟数据读出来,循环写入新表中 但可能的风险如果同步错误或者网络错误可能这次没成功,数据这五分钟数据就没了, 2 、改进方案 1,通过做唯一标识,每次同步前先查询一次 ID 或者最后一次的时间,将新数据同步过来 不知各位同学有没有更好的办法,或者我面要注意什么的吗?

    9 replies    2022-09-28 20:57:38 +08:00
    yungo8
        1
    yungo8  
       Sep 27, 2022 via Android
    另外用一张表记录一下对每个表的最后一次的数据的时间,或者 id 是数值的话也存一下
    lithiumii
        2
    lithiumii  
       Sep 27, 2022
    如果每个表都有自增 ID 的话最简单了吧,新表加个字段,每次同步前查一下上次同步到哪里了,然后语句里加个 WHERE ID > 就行。都用不上多数据库同步的工具。
    F281M6Dh8DXpD1g2
        3
    F281M6Dh8DXpD1g2  
       Sep 27, 2022 via iPhone
    cdc
    dem0ns
        4
    dem0ns  
       Sep 27, 2022
    写个脚本一直刷新同步,简单粗暴
    night98
        5
    night98  
       Sep 27, 2022
    cancel DataX 随便选一个
    bootvue
        6
    bootvue  
       Sep 27, 2022
    datax
    bthulu
        7
    bthulu  
       Sep 28, 2022
    这个我做过, 如果是 mysql 的话, 直接模拟 mysql 从服务器订阅 binlog, 解析 binlong 拿到每行记录的操作后数据, 再根据目标库生成对应的增删改语句.
    如果是 oracle 的话, 可以用 oracle 自带的数据挖掘查询 oracle 日志. 不过 oracle 日志中已提交和未提交是混在一起的, 如果指定只查已提交日志, 而某个家伙开了个事务, 然后过了几个小时甚至更久也没关闭这个事务, 就会造成 oracle 将这几个小时内的所有日志都加载到内存中然后就爆炸了. 要么就不指定查提交还是不提交日志, 一股脑查出来推到消息队列, 再从消息队列里碰到一个提交点就往前回溯把相关数据捞出来. 总之比 mysql 复杂很多倍.
    changdy
        8
    changdy  
       Sep 28, 2022
    cdc ,
    flink cdc
    datax 当然也可以 ,不过要做好 时间戳
    cxzlhr
        9
    cxzlhr  
    OP
       Sep 28, 2022
    确实如各位所说,好像这东西确实不需要太复杂的东西,暴力去读取,现在考勤使用 postgresql 准备使用 jsonb 来把原始记录存一下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   967 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 23:11 · PVG 07:11 · LAX 16:11 · JFK 19:11
    ♥ Do have faith in what you're doing.