问题 清除MySQL General Log Table,它安全吗?


我在服务器上工作,一般的mysql日志表占用的空间接近200GB,这是巨大的。所以,我打算用以下方法清除它:

TRUNCATE table mysql.general_log

可以吗?它会引起任何问题吗?我担心服务器是实时和大应用程序。谢谢。


12699
2018-02-03 06:34


起源

如果可能,请进行备份并尝试截断到某个日期,而不是截断整个日志。 - Ravindra Gullapalli


答案:


它不会导致问题,但是你将丢失所有旧的日志条目,所以Ravindra的建议是好的。

您可以使用以下命令进行备份:

mysqldump -p --lock_tables = false mysql general_log> genlog.sql

你是否需要一直登录?我通常只在我解决性能问题时才打开它。 MySQL在那里记录一切(客户端连接,断开连接和每个语句)。在大多数系统中,日志变得非常快。这也有一些性能开销。


6
2018-04-05 14:35





它肯定会导致问题,除非它没有被禁用然后你截断。如果在启用时截断。如果表格很大,Truncate将锁定表格,因为mysql.general_log引擎是CSV或MyISAM,同时新创建的条目将尝试写入一般日志表中,导致锁定所有连接,并最终以“太多”结束连接”。所以为了安全,请这样做

mysql> SET GLOBAL general_log=OFF;
mysql> TRUNCATE table mysql.general_log;
mysql> SET GLOBAL general_log=ON;

6
2017-12-07 05:58



在TRUNCATE TABLE语法中,如果日志文件具有特定名称(例如“Site_B.log”),它会是什么样子?那么语句是“TRUNCATE TABLE [sitename] .Site_B”还是通用的“TRUNCATE TABLE mysql.general_log;”? - buck1112