我有一个 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 天。
如果您确实想要实际数量的文件,那么您将需要一个脚本。