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

数据库表记录变更监控方案

  •  
  •   zhangshaohan · Sep 15, 2021 · 2758 views
    This topic created in 1696 days ago, the information mentioned may be changed or developed.

    目前有个需求,需要 Java 程序中,监控到某几张表的数据变更

    比如,A 表新增了一条记录,然后我这边 Java 能收到通知,有没有比较轻量级的方案呢?

    目前是用的 canal 订阅 binlog 来实现的,但是遇到 canal 线上服务器 CPU 100%,而且不太稳定。

    13 replies    2021-09-16 19:18:16 +08:00
    Morriaty
        1
    Morriaty  
       Sep 15, 2021   ❤️ 1
    where update_time >= xxxx 呗
    Kymair
        2
    Kymair  
       Sep 15, 2021
    还是订阅 binlog 比较靠谱。

    https://maxwells-daemon.io/
    zealinux
        3
    zealinux  
       Sep 15, 2021
    A 表新增记录后,发一条通知到 MQ 。
    Java 应用订阅这个
    zhangshaohan
        4
    zhangshaohan  
    OP
       Sep 15, 2021
    @Morriaty 这是个思路,谢谢
    zhangshaohan
        5
    zhangshaohan  
    OP
       Sep 15, 2021
    要求是不改造原有业务
    zhangshaohan
        6
    zhangshaohan  
    OP
       Sep 15, 2021
    @Kymair maxwell 这个是不是比 canal 要轻量一些呢
    leorealman
        7
    leorealman  
       Sep 15, 2021
    taowen
        8
    taowen  
       Sep 15, 2021
    xio
        9
    xio  
       Sep 15, 2021
    Postgres 的话可以 pg_notify 来做 pub/sub,不确定其他数据库有么有类似的功能
    mmdsun
        10
    mmdsun  
       Sep 15, 2021 via Android
    一个开源工具 mysql-binlog-connector-java,用来监控 binlog,Java 语言。


    https://github.com/shyiko/mysql-binlog-connector-java
    beginor
        11
    beginor  
       Sep 15, 2021 via Android
    做个 trigger,在 trigger 里面发 http 请求?
    azkaban
        12
    azkaban  
       Sep 15, 2021
    从库 binlog,flink cdc,里面写逻辑就行了
    bthulu
        13
    bthulu  
       Sep 16, 2021
    不要用 canal 啊,手写 binlog 解析器就好了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1052 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 22:46 · PVG 06:46 · LAX 15:46 · JFK 18:46
    ♥ Do have faith in what you're doing.