我想知道是否有替代MySQL通用查询日志的方法。我想记录(大部分) DDL语句,这样我可以跟踪哪些用户DROP数据库/表等等。我知道启用通用查询日志可能会导致一些性能下降。
问题:
问候
在文件系统上设置通用查询日志的目标似乎是可能的,但是由于性能的影响,我仍然在寻找其他方法。
发布于 2013-12-09 07:18:28
my.cnf中的值将普通日志文件路径更改为其他路径。你可以参考这篇博文:http://serge.frezefond.com/2013/04/how-can-we-audit-a-mysql-server/
有由MySQL和一些分支发布的审计插件,如果您担心MySQL服务器上的安全性,可以尝试它们。
1) MySQL企业审计
企业审计使用开放的MySQL审核API来启用标准的、基于策略的监视和记录在特定MySQL服务器上执行的连接和查询活动。
2) McAfee审计插件 -开源
设计时强调安全和审计要求。该插件可以用作独立的审计解决方案,也可以配置为将数据提供给外部监视工具。
3) MariaDB审计插件
许多企业都使用审计条例来确保它们符合法律和行业标准。这类条例往往要求对用户访问数据库数据的过程进行跟踪。
发布于 2013-12-07 14:45:17
记录(至少)DDL的最快方法是使用二进制日志,它对性能的影响最小。它以二进制格式存储,默认情况下写入文件系统缓存,因此它不会向磁盘添加额外的同步刷新操作。典型的间接开销约为5%,如果您使用5.6's二进制日志组提交、主级别的筛选或使用2种主要的binlog格式(即使在行模式下,DDL也以语句格式存储),这种开销可能会更小。您可以使用mysqlbinlog工具将这些绑定日志转换为人类可读的日志。
binlog的问题在于它不跟踪用户名和主机,因此它可能对您的目的毫无用处。无论如何,激活二进制日志几乎总是一个好主意。
我认为这里最好的选择是一个审计插件,因为您基本上是在尝试这样做(审计查询和用户)。有几个选项可用,您甚至可以自己编写一个,但我喜欢McAfee审计插件,它是免费的,开源的,对本例来说足够好。这里是浅谈如何使用它。您可以将其配置为监视"drop"s (和/或任何其他命令)。这应该比激活一般日志花费更少(而且更方便),但我自己还没有对其进行基准测试。它可以以json格式登录到文件或UNIX套接字。这是一个示例输出:
{"msg-type":"activity","date":"1369155747373","thread-id":"6439",
"query-id":"0","user":"debian-sys-maint",
"priv_user":"debian-sys-maint","host":"localhost",
"cmd":"Connect","query":"Connect"}https://dba.stackexchange.com/questions/54546
复制相似问题