一、如果是集群,先从从先始做,最后在做主
二、查看 MongoDB 配置文件的日志路径
grep -i "path" /etc/mongod.conf
显示日志路径:
path: /data/mongodb/log/mongod.log
dbPath: /data/mongodb/data
三、保存配置文件
3.1 确认配置文件是否存在
ls -l /etc/logrotate.d/mongod
如果存在
cat /etc/logrotate.d/mongod
如果不存在,创建文件
sudo vim /etc/logrotate.d/mongod
3.2 文件内容
3.2.1、确认pid
grep -i "pid" /etc/mongod.conf
ls -l /var/run/mongod.pid
如果有值,配置内容为:
/data/mongodb/log/mongod.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 644 mongod mongod
postrotate
/usr/bin/kill -SIGUSR1 $(cat /var/run/mongod.pid 2>/dev/null) 2>/dev/null || true
endscript
}
如果为空以下面的
[root@iouZ ~]# ls -l /var/run/mongod.pid
ls: cannot access '/var/run/mongod.pid': No such file or directory
上面的情况
配置文件里没有指定 PID 文件路径 (
grep -i "pid"没有输出)默认的
/var/run/mongod.pid不存在
要改成systemctl ,保存配置文件内容:
/data/mongodb/log/mongod.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 644 mongod mongod
postrotate
/usr/bin/systemctl kill -s SIGUSR1 mongod 2>/dev/null || true
endscript
}
不同的区别主要是
postrotate
/usr/bin/systemctl kill -s SIGUSR1 mongod 2>/dev/null || true
endscript
四、配置MongoDB支持日志轮转
修改MongoDB配置文件 /etc/mongod.conf:
sudo vim /etc/mongod.conf
确保 systemLog 部分包含:
systemLog:
destination: file
path: /data/mongodb/log/mongod.log
logAppend: true
logRotate: rename # 关键配置
添加: logRotate: rename # 关键配置
五、重启MongoDB让配置生效
sudo systemctl restart mongod
六、手动测试轮转是否生效
sudo logrotate -f /etc/logrotate.d/mongod
检查效果:
ls -lh /data/mongodb/log/
应该会看到类似:
mongod.log (当前日志,几KB)
mongod.log.1.gz (昨天的日志,已压缩)
mongod.log.2.gz (前天的日志,已压缩)
...
配置参数说明
| 参数 | 含义 | 建议值 |
|---|---|---|
daily |
每天轮转一次 | 保持默认 |
rotate 7 |
保留最近7天的日志 | 根据磁盘大小调整,建议7-30天 |
compress |
压缩旧日志 | 开启,节省大量空间 |
delaycompress |
推迟一天压缩 | 开启,方便排查当天问题 |
missingok |
文件不存在不报错 | 保持默认 |
notifempty |
空文件不轮转 | 保持默认 |
create 644 |
创建新文件的权限 | 644即可 |
七、如果你想手动触发但不重启(另外一种方法)
# 找到MongoDB进程ID
ps aux | grep mongod | grep -v grep | awk '{print $2}'
# 发送信号触发日志轮转
sudo kill -SIGUSR1 <上面查到的PID>