我们想用mysql通用查询日志来做实时监控和审计。
目前我们的做法是:
- 设置general_log=on;
- 睡15m;
- 设置general_log=off;
- scp & rm xxx.log;
- 设置 general_log=on;...
但主要问题是当打开/关闭通用日志时,它会导致缓慢查询的高峰。
我也想到了另一种方法:开启genlog;tail -f 并发送日志;定期截断日志文件(使用“> xxx.log”或“cat /dev/null >xxx.log”)。
我想知道它是否实用。
如果只有 mysql 会提供一些内置的通用日志消息队列的东西......
如果您对通过常规日志进行监控真的很感兴趣,可以尝试两种主要方法:
方法#1:轮换日志
假设您有以下配置
my.cnf
:您可以使用以下脚本轮换一般日志:
至于您的监控,您将像以前一样扫描文本文件。您始终可以将 general.log 的以前副本作为档案回顾。
方法 #2:将常规日志设为 MyISAM 表
尝试将常规日志设置为 MyISAM。
首先让我们配置表以记录到表
接下来,MySQL 提供表
mysql.general_log
。它看起来像这样:当然,作为CSV 表的一般日志几乎没有用处。你可以做两件事:
event_time
这是该代码:
当烟雾散去后,
mysql.general_log
现在看起来像这样:事件记录在此表中,而不是文本文件中。当然,您也想旋转它。这是那个脚本
至于您的监控,您可以
mysql.general_log
像这样查询表:也许你可能想检查过去 4 小时
警告
如果你想要文本文件和表格,那么像这样配置它们:
当然,您必须实现两者的轮换。
我写过其他关于
mysql.general_log
:Apr 04, 2013
:使用 MySQL 中的常规日志捕获的查询对 MySQL 进行压力测试Feb 11, 2012
: MySQL 通用日志Jan 08, 2012
:如何启用 MySQL 通用日志?Jun 30, 2011
:如何将 MySQL 日志输出到 syslog?试试看 !!!