SELECT 查询 MySQL binary_log

SELECT queries in MySQL binary_log

我正在尝试验证数据库历史记录。为此,我需要记录和解析对数据库的读写访问。

我知道 MySQL 主要提供两种类型的日志 - general query logbinary log。一般查询日志对我没有帮助,因为它不记录结束时间戳。然而,二进制日志非常适合我的工作,但它不记录读取访问, SELECT 查询。

所以我想知道是否有一种方法可以强制二进制日志记录,以便它也记录非修改查询。

二进制日志只记录数据或元数据的变化。没有选项可以让它记录 SELECT 个查询。

您忽略了 MySQL slow query log,它确实记录了查询的时间戳和持续时间。您可以通过设置 long_query_time=0 使慢查询日志包含所有查询,以便它记录所有耗时 0 秒或更长时间的查询(即所有查询)。

小心!在一个典型的系统中,SELECT 查询的数量比其他查询的数量多很多。您的日志可能增长得非常快。确保配置日志轮换,否则你会填满你的磁盘。

除此之外,听起来您需要审核日志。请参阅 https://dev.mysql.com/doc/refman/5.7/en/audit-log.html 了解 MySQL 企业审计日志插件(这需要来自 Oracle 的支持订阅)。

MySQL 至少有几个审计日志插件的开源实现。例如:https://www.percona.com/doc/percona-server/LATEST/management/audit_log_plugin.html