【问题标题】:How to limit MySQL general_log file size?如何限制 MySQL general_log 文件大小?
【发布时间】:2019-07-12 18:45:31
【问题描述】:

我需要将general_log保存到一个文件中,避免文件太大。

MariaDB 10.3

#This is the settings I write in the my.cnf.
[mysqld]
general_log_file = /var/log/mysql/mysql.log
general_log = 1

我知道有办法设置 log_bin 大小或过期时间,有没有办法设置 general_log? 或者我必须通过 crontab 或手动删除文件。

【问题讨论】:

  • 官方文档没有具体说明,也没有包含该信息的拉取请求、错误、功能请求。所以,你将不得不手动旋转。
  • 添加计划任务以将其关闭,删除旧备份,将其滚动到备份,然后再次打开,根据您的需要经常安排。我的已经运行了十年。
  • 为什么不将日志文件存储在表中?请参阅log_output.. 您可以“旋转”而无需禁用general_log_file 完整并且可能在主时间中丢失日志...如果您要导出,我建议您使用表日志中的数据创建一个临时表这样,您就可以使用临时表(键)删除表日志表,以确保仅从日志中删除导出的数据...
  • 不建议长时间保持常规登录。在许多站点中,它可能会填满磁盘。
  • 嗯...应该有办法限制配置...这是显而易见的事情...(我也找不到...)

标签: mysql mariadb


【解决方案1】:

我不知道,官方文档也没有指定任何这样的配置。我们已将其配置为启动脚本和 cron 选项卡的一部分,用于每日存档

【讨论】:

    【解决方案2】:

    我也有同样的问题。 MySQL似乎无法限制general.log文件的大小。

    我终于在 crontab 中使用这个命令来保持 general.log 最后 20,000 行:

    $ tail -20000 /path/to/mysql/general.log | sponge /path/to/mysql/general.log
    
    

    这并不完美,因为一个请求可以记录在多行上。

    如果sponge 不可用:

    $ apt install moreutils
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2023-03-08
      • 2012-04-26
      • 2016-09-15
      • 1970-01-01
      • 2020-08-24
      • 2011-04-05
      相关资源
      最近更新 更多