【发布时间】:2016-05-10 15:44:35
【问题描述】:
有没有办法监听 MySQL/MariaDB 中的数据库变化,就像你可以跟踪 MongoDB oplog 一样?我在网上找不到这方面的信息。也许它只在 Postgres 中可用,而在 MySQL 中不可用。
【问题讨论】:
有没有办法监听 MySQL/MariaDB 中的数据库变化,就像你可以跟踪 MongoDB oplog 一样?我在网上找不到这方面的信息。也许它只在 Postgres 中可用,而在 MySQL 中不可用。
【问题讨论】:
方案A:开启“通用日志”。所有查询都将写入该日志。确保很快将其关闭;否则磁盘将被填满。
Plan B:开启 binlog。这包含所有“写入”。有一个程序可以显示该日志的内容。
【讨论】:
mysqldumpbinlog(或其他任何名称),但我认为您不能在“拖尾”设置中使用它。您需要该程序来解析文件。但是,它可以从任何给定的偏移量开始,并且偏移量包含在日志中。
您可以使用mysqlbinlog 实用程序来跟踪the binary log。要远程跟踪服务器以进行更改,请使用以下命令。
mysqlbinlog -R -t --stop-never -h <hostname> -u <user> -p <binlog file name>
要获取 binlog 文件名,请在要跟踪的服务器上执行 SHOW MASTER STATUS。如果要解码行事件,请添加 -v --base64-output=decode-rows 标志。
mysqlbinlog 要求启用二进制日志。可以通过在配置文件中添加log-bin 来启用它。可以通过将文件名作为值添加到log-bin 或使用log-bin-basename 来控制文件名。例如,log-bin=my-binlog 将生成 my-binlog.000001。
【讨论】:
对于我的项目,我使用 InfluxDB 来监控事物并在 Grafana 上绘制它们。 general_log 是一个不错的选择,但您的空间会因此而浪费。
这里有一个链接可以帮助你:https://dzone.com/articles/mysql-monitoring-with-telegraf-influxdb-amp-grafan
【讨论】: