【问题标题】:Clear MySQL General Log Table, Is It Safe?清除MySQL通用日志表,安全吗?
【发布时间】:2013-02-03 06:34:10
【问题描述】:

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

TRUNCATE table mysql.general_log

没事吧?它会引起任何问题吗?我担心服务器是实时的大型应用程序。谢谢。

【问题讨论】:

  • 备份并尽可能截断到某个日期,而不是截断整个日志。

标签: mysql logging


【解决方案1】:

它肯定会导致问题,除非它被禁用然后你截断。如果在启用时截断。如果表很大,截断将锁定表,因为 mysql.general_log 引擎是 CSV 或 MyISAM ,同时新创建的条目将尝试写入通用日志表导致锁定。所以为了安全起见这样做

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

【讨论】:

  • 在 TRUNCATE TABLE 语法中,如果日志文件具有特定名称(例如“Site_B.log”)会是什么样子?那么该语句是“TRUNCATE TABLE [sitename].Site_B”还是通用的“TRUNCATE TABLE mysql.general_log;”?
  • 谢谢你。非常有用。
【解决方案2】:

这不会造成问题,但您会丢失所有旧的日志条目,所以上面 Ravindra 的建议很好。

您可以使用以下方法进行备份:

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

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

【讨论】:

    猜你喜欢
    • 2013-11-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多