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

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

  •  
  •   cxzlhr · 2022-09-27 21:48:02 +08:00 · 1096 次点击
    这是一个创建于 569 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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