【问题标题】:How to read a mysql binlog如何读取 mysql binlog
【发布时间】:2021-01-13 09:22:30
【问题描述】:

我想编写一个服务来跟踪 mysql bin 日志以获取有关数据库更改的通知。

有没有开源库可以读取并解析ROW格式的mysql bin log?

【问题讨论】:

  • 有可以做到这一点的开源和专有解决方案,但是 “我可以使用哪个库来...?” 问题被认为是 Stack Overflow 的题外话。

标签: mysql mysqlbinlog


【解决方案1】:

使用mysqlbinlog

服务器的二进制日志由包含“事件”的文件组成,这些“事件” 描述对数据库内容的修改。服务器写这些 二进制格式的文件。要以文本格式显示其内容,请使用 mysqlbinlog 实用程序。也可以使用 mysqlbinlog 来显示 从服务器在复制中写入的中继日志文件的内容 设置,因为中继日志与二进制日志的格式相同。

来源:https://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html

【讨论】:

    【解决方案2】:

    我用这个:https://github.com/alibaba/canal

    它是用 Java 编写的,并且在 conf 文件中进行了一些更改,您可以开始使用了,内部细节已经为您处理好了。

    文档为中文。但是代码结构很简单,conf文件的变量名是不言自明的,所以稍微努力一下,你也许能弄明白:)

    【讨论】:

      【解决方案3】:

      你可以使用 https://github.com/monothorn/mysql-parser 它基于python中的sqlparse。 由于您启用了 binlog 行格式,您可以结帐 https://github.com/noplay/python-mysql-replication

      【讨论】:

        【解决方案4】:

        您可以使用以下命令读取 bin-log 文件:

        read -p "Enter the Log File Name : " logfilename; mysqlbinlog $logfilename | grep -i ^use | sort | uniq -c | sort -rn
        

        【讨论】:

          【解决方案5】:

          来自github的两个java项目:mysql-binlog-connector-javamysql-binlog-connector-java可以帮助你解析mysql binlog。

          【讨论】:

            猜你喜欢
            • 2012-08-02
            • 2019-08-29
            • 2014-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-03
            • 2019-03-15
            • 2010-11-24
            相关资源
            最近更新 更多