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

问题描述 投票:0回答:4

我尝试了几个命令(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;
mysql logging
4个回答
37
投票

FLUSH LOGS 只是关闭并重新打开日志文件。 如果日志文件很大,则不会减少它们。 如果你在Linux上,你可以使用

mv
来重命名正在使用的日志文件,然后在FLUSH LOGS之后,你知道MySQL正在写入一个新的小文件,你可以删除旧的大文件文件。

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

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


18
投票

如果您使用的是亚马逊 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


1
投票

您的服务器似乎未启用二进制日志记录。我猜您想删除在启用二进制日志记录时使用/创建的旧日志文件。如果需要,您可以使用“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


0
投票

PURGE BINARY LOGS语句删除日志索引文件中列出的指定日志文件名或日期之前的所有二进制日志文件。 BINARY 和 MASTER 是同义词。

要列出服务器上的二进制日志文件,请使用 SHOW BINARY LOGS

在“2024-04-21”之前清除二进制日志;

如果expire_logs_days服务器系统变量未设置为0,服务器将在给定天数后自动删除二进制日志文件。从 MariaDB 10.6 开始,binlog_expire_logs_seconds 变量允许更精确地控制 binlog 删除,并且如果两者都非零则优先。

© www.soinside.com 2019 - 2024. All rights reserved.