在MySQL中,如何删除/刷新/清除所有不必要的日志?

时间:2011-09-11 21:19:14

标签: mysql logging clear

我已经尝试了几个命令(FLUSH LOGS,PURGE MASTER)但没有删除日志文件(以前激活时)或日志表(mysql / slow_log.CSV和mysql / general_log.CSV及其.frm和.CSM对应项) )。

SHOW BINARY LOGS返回"您没有使用二进制日志记录"。

编辑:我找到了这个简单的解决方案来清除表日志(但还没有使用mysql命令的文件日志):

TRUNCATE mysql.general_log;
TRUNCATE mysql.slow_log;

3 个答案:

答案 0 :(得分:28)

FLUSH LOGS刚关闭并重新打开日志文件。如果日志文件很大,则不会减少它们。如果您使用的是Linux,则可以使用mv在日志文件正在使用时重命名,然后在FLUSH LOGS之后,您知道MySQL正在写入一个新的小文件,您可以删除旧的大文件。

二进制日志不同。要消除旧的binlog,请使用PURGE BINARY LOGS。确保您的从站(如果有)仍未使用二进制日志。也就是说,运行SHOW SLAVE STATUS来查看他们正在处理的binlog文件,并且不要清除该文件或以后的文件。

另请注意,如果您需要从备份还原然后重新应用binlog以使数据库保持最新,则binlog对于时间点恢复非常有用。如果您需要以这种方式使用binlog,请不要清除自上次备份以来已写入的binlog。

答案 1 :(得分:17)

如果您使用的是亚马逊RDS,执行此操作两次就可以解决问题:

PROMPT> CALL mysql.rds_rotate_slow_log;
PROMPT> CALL mysql.rds_rotate_general_log;

来源:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html

答案 2 :(得分:0)

您的服务器似乎未启用二进制日志记录。我想您要删除在启用二进制日志记录时使用/创建的旧日志文件。如果需要,可以使用'rm'命令手动删除它们。如果要启用二进制日志记录,可以通过更新配置文件来执行相同操作(但如果服务器已在运行,则需要重新启动服务器)。您可以参考以下链接。 http://dev.mysql.com/doc/refman/5.0/en/replication-options-binary-log.html#option_mysqld_log-bin http://dev.mysql.com/doc/refman/5.0/en/replication-options-binary-log.html#sysvar_log_bin