MySQL 或 MariaDB 的 Log 记录档可以纪录 MySQL 的错误, 对服务器的除错很有用, 但这个 MySQL Log 记录档跟其他 log 一样, 不理它会一直增大容量, 而 MySQL 内置没有记录档轮替的功能, 要做记录档轮替需要借用其他工具, 可以是自行编写 Shell Script 或 logrotate, 以下文章会示范在用 logrotate 将 MySQL 的 error log 记录档轮替。
第一步需要确定系统有开启 MySQL Log, 及知道 Log 的位置, 如果在 CentOS 用 yum 安装 MariaDB, 默认已经开启记录档, 默认记录档位置在 “log-error=/var/log/mariadb/mariadb.log”, 如果需要修改这个位置, 或查看系统存放记录档的位置, 可以开启 /etc/my.cnf:
# vi /etc/my.cnf
可以查看里面的 log-error 位置, 分别在 [mysqld] 及 [mysqld_safe] 段落, 如果没有可以自行加入, 例如:
|
1 2 3 4 5 |
[mysqld] log-error=/var/log/mariadb/mariadb.log [mysqld_safe] log-error=/var/log/mariadb/mariadb.log |
如果有修改 my.cnf 的内容, 需要重新启动 MySQL:
# systemctl restart mysql
现在可以设定 logrotate, 建立档案 /etc/logrotate.d/mysql:
# vi /etc/logrotate.d/mysql
以下的设定以上面的记录档位置 /var/log/mariadb/mariadb.log 作为例子:
另外如果不是用 RHEL 及 CentOS, 可能有些参数要按系统的配置进行修改, 加入以下内容到档案:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/var/log/mariadb/mariadb.log { create 600 mysql mysql notifempty daily maxsize 100M ## 当记录档超过 100MB 时输替 dateext rotate 5 missingok compress delaycompress postrotate # just if mysqld is really running if test -x /usr/bin/mysqladmin && \ /usr/bin/mysqladmin ping &>/dev/null then echo "Flushing Logs" /usr/bin/mysqladmin flush-logs fi endscript } |
储存盘案后离开 vi, logrotate 便设定完成了。