一日一技:手动rotate MongoDB的日志

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一日一技:手动rotate MongoDB的日志

默认情况下,MongoDB的日志始终会写到同一个文件中。在Linux系统下,这个日志文件为 /var/log/mongodb/mongodb.log。随着时间的推移,这个文件会越来越大:

kingname@xxx:/var/log/mongodb$ ls -lh
total 43G
-rw------- 1 mongodb mongodb 43G Jun  6 17:54 mongod.log

这样的大日志占用了太多了储存空间。但由于此时MongoDB正在往里面写入数据,所以不应该直接删除它,否则可能会导致不可预料的问题。

现在需要让MongoDB把日志写到另一个文件中,从而释放当前文件,然后再删除这个大日志文件。

要实现这个目的,可以使用MongoDB的 rotate功能。在MongoDB的官方文档中写到:

When used with the --logpath option or systemLog.path setting, mongod and mongos instances report a live account of all activity and operations to a log file. When reporting activity data to a log file, by default, MongoDB only rotates logs in response to the logRotate command, or when the mongod or mongos process receives a SIGUSR1 signal from the operating system.

翻译过来就是,当你通过 --logpath参数指定了日志的位置以后,MongoDB会始终把日志写到这个文件中,除非你执行了 logRotate命令,或者MongoDB的进程收到了 SIGUSR1信号。

文档地址为:https://docs.mongodb.com/manual/tutorial/rotate-log-files/

文档中提到了两种办法:

执行 logRotate命令

进入MongoDB的shell中:

kingname@xxx:/var/log/mongodb$ mongo 
# 切换到admin库
> use admin
switched to db admin
# 执行命令rotate日志
> db.adminCommand( { logRotate : 1 } )

命令执行完成以后,退出MongoDB的Shell,重新查看日志文件夹,可以发现如下图所示:

此时, mongod.log文件变成了22KB,而多出一个 mongod.log.2019-06-06T09-54-03,这个文件有43GB,这就是之前的大日志文件。MongoDB在Rotate日志的时候,会首先把原来的日志改名为 mongod.log.日期,然后重新创建一个新的 mongod.log文件,并把新的日志写入进去。

现在就可以直接删除 mongod.log.2019-06-06T09-54-03从而释放硬盘空间了。

向MongoDB进程发送信号

第二种方式,就是向MongoDB的进程发送信号。为了实现这个目的,首先需要获得进程的 pid。在Linux或者mac中执行命令:

# 在Linux下用-aux
ps -aux | grep mongo
# 在mac下用-ef
ps -ef | grep mongo

从左数第二项就是MongoDB的PID,如下图所示:

此时,执行命令:

# kill -SIGUSR1 PID
kill -SIGUSR1 561

就可以实现rotate日志。这个地方的命令虽然是 kill,但是不用担心,这并不是杀死MongoDB的进程,只是给它发一个信号而已。

目录
相关文章
|
9月前
|
存储 NoSQL 安全
【赵渝强老师】MongoDB的Journal日志
MongoDB通过Journal日志保证数据安全,记录检查点后的更新,确保数据库从异常中恢复到有效状态。每个Journal文件100M,存于--dbpath指定的journal子目录。默认已启用Journal日志,可通过--journal参数手动启用。WiredTiger存储引擎使用128KB内存缓冲区,异常关机时可能丢失最多128KB的数据。视频讲解和详细步骤参见附录。
220 17
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第9天】mongoDB查看数据的插入日志
629 4
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第2天】mongoDB查看数据的插入日志
449 0
|
存储 监控 NoSQL
【MongoDB 专栏】MongoDB 的日志管理与分析
【5月更文挑战第11天】MongoDB日志管理与分析至关重要,包括系统日志和操作日志,用于监控、故障排查和性能优化。合理配置日志详细程度、存储位置和保留策略,使用日志分析工具提升效率,发现性能瓶颈和安全性问题。日志分析有助于优化查询、调整配置,确保数据安全,并可与其他监控系统集成。面对日志量增长的挑战,需采用新技术如分布式存储和数据压缩来保障存储和传输。随着技术发展,不断进化日志管理与分析能力,以支持MongoDB的稳定高效运行。
369 2
【MongoDB 专栏】MongoDB 的日志管理与分析
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第22天】mongoDB查看数据的插入日志
120 3
|
JSON 缓存 负载均衡
【服务网格架构】Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
【服务网格架构】Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
|
2月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
2月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
266 79
|
2月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
163 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
1月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。

推荐镜像

更多