zoukankan      html  css  js  c++  java
  • 实时监听数据库变化

    一些概念

    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:

     06.如何解析binlog(https://www.percona.com/blog/2016/09/13/mysql-cdc-streaming-binary-logs-and-asynchronous-triggers/

       将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 字符串,不需要编写客户端。

      

  • 相关阅读:
    ArcEngine将对象存储到Blob字段中!
    ArcGIS细节层次(LOD)学习笔记
    ArcSDE Version(版本)学习笔记
    换一种思路:将数据库中的规范数据导入到Geodatabase中
    ArcEngine编辑功能的实现(二)
    ArcEngine编辑功能(一)
    PetShop项目学习笔记(二)
    PetShop项目学习笔记(一)
    BindingSource组件使用
    Oracle10g安装及监听问题处理
  • 原文地址:https://www.cnblogs.com/baizhuang/p/11698100.html
Copyright © 2011-2022 走看看