如何限制 mariadb 日志?

如何限制 mariadb 日志?

我有一个 nextcloud 服务器,它使用 Mariadb 作为数据库,但由于 Mariadb 垃圾邮件日志文件而遇到问题(即:mariadb-bin.0000**/var/log/mysql.

这似乎是由于服务器上发生了多少文件/事务,而不是由于任何错误,所以没有什么可修复的。我只需要知道如何限制文件夹中保存的日志文件数量,这样它就不会一直占用 VPS 可用的有限空间。

有没有办法限制这些文件的数量,以便自动删除或限制它们,从而mariadb-bin.index不受影响?

答案1

我没有找到不使用脚本来限制文件数量的方法(Percona 有一个max_binlog_files但它从未回到 MySQL/MariaDB)。

解决方法是使用以下两种方法之一:

系统设置expire_log_days或者binlog_expire_logs_seconds(最后一个需要 MariaDB 10.6.1)

二进制日志在多少天后可以自动删除。0 表示不自动删除,也是默认值。

--binlog-expire-logs-seconds=N

其中 N 是秒数。

您还可以使用命令根据日期清除日志:

  PURGE BINARY LOGS BEFORE '2023-04-01';

这些都不会直接限制文件的数量,但如果你知道在 N 秒内创建了多少个文件,它就会接近。

这里有一个日志旋转示例(基于登录时设置的日志文件/var/log/mysql/)其中 error_log、general_query_log 和 slow_query_log 被拆分成不同的日志文件。这可能也很有用,这样您就可以保留重要的日志并丢弃正常的通知。logrotate 的问题:看起来文件被清除前的最少天数是 7 天。

如果您确实想要实际数量的文件,那么您将需要一个脚本。

相关内容