2

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

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

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

4

1 回答 1

3

二进制日志仅记录对数据或元数据的更改。没有选项可以让它记录 SELECT 查询。

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

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

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

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

于 2018-02-12T16:23:57.217 回答