我最近刚刚升级到MySQL 5.1.6,以便利用将通用日志保存到表-> (即mysql.general_log )的功能。一旦我这样做了,我立即惊讶于有那么多的查询实际上正在命中我们的系统。从第一个小时开始,我在这个通用日志表中大约有40,000行。我还没有在MySQL文档中找到关于是否有一般日志表大小限制的说明。
让这个通用日志以这样的速度增长有问题吗?
如果存在大小问题,该如何处理?
有没有一些公认的做法,如果有大小问题,如何处理?
我是否应该创建一个事件来清除该表并将数据保存到一个文件中?
非常感谢你的帮助!
发布于 2012-02-19 00:51:39
默认情况下,general_log表使用CSV引擎,它实际上只是驱动器上的一个完整的CSV文件,但可以通过SQL访问。这意味着它的大小限制是文件系统上文件的大小限制。
发布于 2013-10-19 05:16:20
我对我的日志文件做了类似的事情。我只对保留过去的24小时感兴趣,但你可以调整事件来创建存档表,等等。它不会记录事件运行所需的几秒钟,但我不介意。
CREATE EVENT `prune_general_log` ON SCHEDULE
EVERY 1 DAY STARTS '2013-10-18'
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT 'This will trim the general_log table to contain only the past 24 hours of logs.'
DO BEGIN
SET GLOBAL general_log = 'OFF';
RENAME TABLE mysql.general_log TO mysql.general_log2;
DELETE FROM mysql.general_log2 WHERE event_time <= NOW()-INTERVAL 24 HOUR;
OPTIMIZE TABLE general_log2;
RENAME TABLE mysql.general_log2 TO mysql.general_log;
SET GLOBAL general_log = 'ON';
END发布于 2012-02-19 00:49:10
您应该使用诸如mysql-log-rotate http://dev.mysql.com/doc/refman/5.0/en/log-file-maintenance.html之类的实用程序来轮换日志文件。
https://stackoverflow.com/questions/9343001
复制相似问题