我想编写一个服务来跟踪 mysql bin 日志以获取有关数据库更改的通知。
是否有一个开源库可以读取和解析 ROW 格式的 mysql bin 日志?
使用mysqlbinlog
.
服务器的二进制日志由包含描述数据库内容修改的“事件”的文件组成。服务器以二进制格式写入这些文件。要以文本格式显示它们的内容,请使用 mysqlbinlog 实用程序。您还可以使用 mysqlbinlog 在复制设置中显示从服务器写入的中继日志文件的内容,因为中继日志与二进制日志具有相同的格式。
来源:https ://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html
我用这个:https ://github.com/alibaba/canal 。
它是用 Java 编写的,并且在 conf 文件中进行了一些更改,您已准备好开始,内部细节已为您处理好。
文档是中文的。但是代码结构很简单,conf 文件的变量名是不言自明的,所以通过一些努力,你也许能够弄清楚:)
来自 github 的两个用 java 编写的项目:mysql-binlog-connector-java和mysql-binlog-connector-java可以帮助您解析 mysql binlog。
您可以使用以下命令读取 bin-log 文件:
read -p "Enter the Log File Name : " logfilename; mysqlbinlog $logfilename | grep -i ^use | sort | uniq -c | sort -rn
你可以使用 https://github.com/monothorn/mysql-parser 它基于python中的sqlparse。由于您启用了 binlog 行格式,您可以查看 https://github.com/noplay/python-mysql-replication