python监听数据库表的变化_实时监听数据库变化
⼀些概念
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: 记录的是执⾏的语句
mysql存储文档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_binl
og_size,不会⽣成新的⽇志⽂件,事务全写⼊⼀个⼆进制⽇志中,这种情况主要是为了保证事务的完整性);
⽇志被刷新时,新⽣成⼀个⽇志⽂件。
flush logs
使⽤ binlog:
将binlog 事件保存到mysql ⽂档存储或者mongodb
对⼆进制⽇志时间做出反应:异步触发器
除此之外,⽬前常⽤的 mysql binlog 解析⼯具主要有: canal , mysql_Streamer
canal 由 Java 开发,分为服务端与客户端,拥有众多的衍⽣程序,canal 需要⾃⼰编写客户端消费canal 解析到的数据。
maxwell 相对 canal 的优势是使⽤简单,将数据变更输出未 json 字符串,不需要编写客户端。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论