MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
jiezhi
V2EX  ›  MySQL

求 MySQL 增量更新和维护汇总表解决方案

  •  
  •   jiezhi ·
    Jiezhi · Jul 27, 2018 · 4674 views
    This topic created in 2888 days ago, the information mentioned may be changed or developed.
    我这边负责数据处理,需要从业务库里拉取数据进行分析。一方面需要定时做个汇总表,这样一些需要计算的过程可以提前做好了;另一方面想把业务端的数据增量更新到我这边的数据库里。

    本来我的打算是,前者用事件,后者用触发器的。但同时说最好不要把这些逻辑放到数据库来做,影响效率。

    目前了解到首富家有个 canal 项目,基于解析 binlog 的。

    所以针对这两个问题,V 友现在有没有什么其他好的解决方案?不吝赐教。
    8 replies    2018-07-27 14:05:41 +08:00
    lihongjie0209
        1
    lihongjie0209  
       Jul 27, 2018   ❤️ 1
    手动拉取的话可以记录一个最后拉取的 ID, 每次拉取都从这个 ID 开始
    jiezhi
        2
    jiezhi  
    OP
       Jul 27, 2018
    @lihongjie0209 #1 这只能获取到新增的数据,拿不到修改和删除的数据。即使加上了 update_time,也拿不到删除的数据。
    zhouquan03
        3
    zhouquan03  
       Jul 27, 2018   ❤️ 1
    我们也遇到同样的问题。采用数据+版本号方式,数据逻辑删除就行,删除操作就变更为 update,加上定期归档解决问题。
    lihongjie0209
        4
    lihongjie0209  
       Jul 27, 2018
    @jiezhi #2 是的, 如果需要更新和删除数据的事件,一种办法就是业务方改代码, 不过这种一般不可能. 那么剩下的就是你所说的 binlog 了
    lihongjie0209
        5
    lihongjie0209  
       Jul 27, 2018
    @zhouquan03 #3 这就说我所说的需要业务方改代码
    ccl945
        6
    ccl945  
       Jul 27, 2018   ❤️ 1
    kettle 了解一下
    owenliang
        7
    owenliang  
       Jul 27, 2018   ❤️ 1
    让业务主动把变化同步到队列,你来消费。

    少用什么 binlog tailer,都是半吊子项目,坑死你没商量。
    windfarer
        8
    windfarer  
       Jul 27, 2018   ❤️ 1
    介绍几个半吊子项目给你踩踩坑,www https://farer.org/2018/07/27/change-data-capture/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5400 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 09:09 · PVG 17:09 · LAX 02:09 · JFK 05:09
    ♥ Do have faith in what you're doing.