You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何限制MariaDB的日志文件数量?

如何限制MariaDB的日志文件数量?

嗨,我碰到过好多用NextCloud搭配MariaDB的朋友遇到这个问题——二进制日志(就是那些mariadb-bin.0000**文件)疯狂占VPS空间,确实头疼!不过这事儿很好解决,咱们可以通过配置MariaDB的参数,让它自动清理旧日志,完全不用手动删,还不会搞坏mariadb-bin.index,具体方法如下:

方法一:修改配置文件永久生效(推荐)

这是最稳妥的方式,修改后重启MariaDB就会一直生效:

  1. 先找到你的MariaDB配置文件,不同系统位置略有不同:
    • Debian/Ubuntu 一般是 /etc/mysql/mariadb.conf.d/50-server.cnf
    • CentOS/RHEL 通常是 /etc/my.cnf.d/server.cnf
    • 也可以直接用命令搜索:find /etc -name "*.cnf" | grep -E "(mysql|mariadb)"
  2. 用编辑器打开配置文件,比如nano /etc/mysql/mariadb.conf.d/50-server.cnf,找到[mysqld]区块,添加或修改以下两个参数(选一个或者一起用都可以):
    # 只保留最近7天的二进制日志
    expire_logs_days = 7
    # 最多保留10个二进制日志文件
    max_binlog_files = 10
    
    数值可以根据你的VPS空间和业务量调整——如果空间紧张,就把天数设短点、文件数设少点;如果需要保留更久的日志用于数据恢复,就适当调大。
  3. 保存文件后,重启MariaDB服务:
    # 适用于systemd系统(比如Ubuntu 16.04+、CentOS 7+)
    systemctl restart mariadb
    # 老版本系统用service命令
    service mariadb restart
    

方法二:临时生效(无需重启,重启后失效)

如果不想马上重启服务,可以先在MariaDB命令行里临时设置,等有空再改配置文件:

  1. 登录MariaDB控制台:
    mysql -u root -p
    
    输入你的root密码后进入命令行界面。
  2. 执行以下SQL命令设置全局参数:
    SET GLOBAL expire_logs_days = 7;
    SET GLOBAL max_binlog_files = 10;
    
  3. 要是想立刻清理已经超过保留期限的旧日志,可以执行:
    # 清理7天前的所有二进制日志
    PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);
    # 或者按文件名精准清理,比如删掉mariadb-bin.000010之前的所有日志
    PURGE BINARY LOGS TO 'mariadb-bin.000010';
    
    执行后mariadb-bin.index会自动更新,完全不用担心损坏索引文件。

小提醒

别把保留天数/文件数设得太极端哦!如果你的NextCloud有数据恢复需求,比如某天误删了重要文件,二进制日志是可以帮你恢复到某个时间点的,所以最好结合你的备份策略来调整——比如你每天都做全量备份,那保留3-7天的日志就足够啦。

备注:内容来源于stack exchange,提问作者RolandiXor

火山引擎 最新活动