mongodb的日志分割

一、如果是集群,先从从先始做,最后在做主

二、查看 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

上面的情况

  1. 配置文件里没有指定 PID 文件路径grep -i "pid" 没有输出)

  2. 默认的 /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>
相关推荐
这个DBA有点耶21 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G21 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备21 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218611 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安1 天前
MySQL-触发器
数据库·mysql
白远山1 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro1 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148111 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘