羽中飞人 2021-06-10 11:36 采纳率: 51.1%
浏览 42
已采纳

python如何监控阿里云RDS数据库某个表格有无变化

我现在是用sql语句:select * from table_name where id = var来查询表格相应的值有无变化

感觉这样消耗很高

有没有更简单的方法来监控mysql的表格数据有无变化

  • 写回答

2条回答 默认 最新

  • 王大师王文峰 企业官方账号 2021-06-10 12:21
    关注

    看一下这个博客,望采纳,谢谢!

    一些概念
    
    CDC : Change Data Capture(改变数据捕获),可以识别提取从上次提取之后发生变化的数据
    
    cdc 的两种模式:
    
    同步:同步cdc主要是采用触发器 记录新增数据,基本能够做到实时增量提起
    
    异步:异步cdc 通过分析已经提交的日志记录来得到增量数据信息,有一定的延时,并且提供了到 oracleStreams 的接口
    
    源表(Source Table):业务数据库需要捕获数据的源表
    
    变化表(Change Table):保存从源表捕获的变化数据
    
    Mysql Binlog 研究
    
    mysql-binlog 是mysql 数据库的二进制日志,用于记录用户对数据库操作的 sql 语句(除了查询语言)。可以使用mysql bin 命令查询二进制内容
    
    binlog 的格式有三种: Statement,Row,Mixed
    
    windows 下mysql5.7 启动 binlog : 参考
    
    如何使用mysql binlog : 参考
    
    Statement: 记录的是执行的语句
    
    Row: 记录的是每行的修改记录,可能会产生大量日志
    
    Mixed: Statement 与 Row 的结合
    
    01. 查看 binlog_format
    
    show variables like 'binlog_format'
    
    
    
    02.查看是否开启 binlog
    
    show variables like 'log_bin'
    
    
    
    如果binlog没有开启,可以通过set sql_log_bin=1命令来启用;如果想停用binlog,可以使用set sql_log_bin=0
    
    03.获取 binlog 文件列表
    
    show binary logs
    
    
    
    04.查看当前正在写入的 binlog 文件
    
    show master status
    
    
    
    05.查看第一个binlog日志内容
    
    show binlog events
    
    查看指定binlog 文件内容
    
    show binlog events in 'mysql-bin.000002'
    
    
    
    当停止或重启服务器时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新的日志文件,文件序号递增;此外,如果日志文件超过max_binlog_size(默认值1G)系统变量配置的上限时,
    
    也会生成新的日志文件(在这里需要注意的是,如果你正使用大的事务,二进制日志还会超过max_binlog_size,不会生成新的日志文件,事务全写入一个二进制日志中,这种情况主要是为了保证事务的完整性);
    
    日志被刷新时,新生成一个日志文件。
    
    flush logs
    
    
    
    使用 binlog:
    
    
    
    将binlog 事件保存到mysql 文档存储或者mongodb
    
    对二进制日志时间做出反应:异步触发器
    
    maxwell 是一个实时抓取mysql  二进制日志 binlog ,并生成 json 格式的消息,作为生产者发送给kafka ,kinesis,rabitmq 等,参考 https://blog.csdn.net/wwwdc1012/article/details/88388552
    
    除此之外,目前常用的 mysql binlog 解析工具主要有: canal , mysql_Streamer
    
    
    
    canal 由 Java 开发,分为服务端与客户端,拥有众多的衍生程序,canal 需要自己编写客户端消费canal 解析到的数据。
    
    maxwell 相对 canal 的优势是使用简单,将数据变更输出未 json 字符串,不需要编写客户端。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?