MongoDB日志切割的三种方式总结

目录
  • 前言
  • 方法如下
    • 1. 通过 MongoDB 管理命令进行切割
    • 2. 通过 Linux 系统自带的服务 logrotate 进行切割
    • 3. 通过向进程发送 SIGUSR1 信号来切割日志
  • 总结

前言

线上运行的服务会产生大量的运行及访问日志,日志里会包含一些错误、警告及用户行为等信息。通常服务会以文本的形式记录日志信息,这样可读性强,方便于日常定位问题。但当产生大量的日志之后,要想从大量日志里挖掘出有价值的内容,则需要对数据进行进一步的存储和分析。

任何一种数据库都有各种各样的日志,MongoDB也不例外。MongoDB中有4种日志,分别是系统日志、Journal日志、oplog主从日志、慢查询日志等。这些日志记录着MongoDB数据库不同方面的踪迹

MongoDB 默认是不会进行切割日志的,除非我们配置了 logRotate = rename,并且重启 MongoDB 服务,才会进行切割日志的,那么为了避免实际中我们一个日志文件过大,我们需要对日志进行切割,有两个办法:

方法如下

1. 通过 MongoDB 管理命令进行切割

使用该命令时需要在 MongoDB 运行时指定日志文件路径。--logpath [file] ,或者在配置文件中指定。

use admin
db.runCommand({logRotate:1})

2. 通过 Linux 系统自带的服务 logrotate 进行切割

首先我们需要配置 MongoDB 参数 logRotate = reopen, logappend = true,然后通过 Linux 系统自带的 logrotate。配置文件放置在 /etc/logrotate.d/, 切割配置文件示例:

/opt/mongodb/log/mongodb.log {
rotate 180
daily
size 100M
olddir /opt/mongodb/log/oldlog
copytruncate
dateext
compress
notifempty
missingok
}

3. 通过向进程发送 SIGUSR1 信号来切割日志

如果我们的进程 id 是19555,那么我们可以通过以下命令来切割日志的。只要我们执行了该命令,日志就会立即进行切割。

kill -SIGUSR1   19555

总结

到此这篇关于MongoDB日志切割的三种方式的文章就介绍到这了,更多相关MongoDB日志切割内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-09-14

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录

System.out和System.err都被打印到catalina.out.catalina.out不会rotate.一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 1.可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息. [root@localhost conf]# pwd /usr/local/tomcat/conf [root@localhost conf]# cp logging.pr

Linux下定时切割Tomcat日志并删除指定天数前的日志记录

System.out和System.err都被打印到catalina.out.catalina.out不会rotate.一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 1.可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息. [root@localhost conf]# pwd /usr/local/tomcat/conf [root@localhost conf]# cp logging.pr

nginx访问日志并删除指定天数前的日志记录配置方法

说明: 操作系统:CentOS 站点1:bbs.jb51.net 站点2:sns.jb51.net Nginx安装路径:/usr/local/nginx Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf 站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs.jb51.net.conf 站点2配置文件路径:/usr/local/nginx/conf/vhost/sns.jb51.net.conf 目的: 1.对站点1和站点2的n

Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务器 mkdir -p /backup/oracledata #新建Oracle数据库备份目录 chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在

Windows下通过FTP自动备份数据到服务器并删除指定天数前的备份

说明: 1.要备份的文件在D盘根目录下面,以时间命名,(一般我们通过护卫神的好备份软件实现备份)例如 D:\data_db_201112130001.BAK D:\data_db_201112140002.BAK D:\data_db_201112150003.BAK 每天会自动生成一个新的文件,例如2011年12月16号,会自动生成data_db_201112160004.BAK 2.要把D:\下面当天生成的那个数据定时备份到FTP服务器上,例如,今天是2011年12月16号,要把data_d

linux下mysql自动备份数据库与自动删除临时文件

一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表:crontab -l然后新建:crontab -e添加一行:00 03 * * * rm -rf /www/cmstest/my120/public/scripts/jpgraph/*保存退出.重启服务:  /etc/rc.d/init.d/crond restart 二.每日24:00自动备份数据库 利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的. 1.创建保存备份文件的路径/mysq

Linux实现定时备份MySQL数据库并删除30天前的备份文件

1. MySQL5.6以上版本 2. 修改 /etc/my.cnf 文件 # vim /etc/my.cnf [client] host=localhost user=你的数据库用户 password='你的数据库密码' 3. 编写数据库脚本 mysql-backup.sh # vim mysql-backup.sh #!/bin/bash backupDir=数据库备份目录 backupTime=`date +%Y%m%d%H%M%S` mysqldump 你的数据库 | gzip > $ba

linux下python3连接mysql数据库问题

python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 1.安装pymysql pymysql就是作为python3环境下mysqldb的替代物,进入命令行,使用pip安装pymysql pip install pymysql3 2.使用pymysql 在我们需要使用数据库的.py文件开头添加下面两行 import pymysql pymysql.install_as_MySQLdb() 第一行是引入pymysq

linux下定时执行任务的方法及crontab 用法说明(收集整理)

linux下定时执行任务的方法 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为"crontab",是"cron table"的简写. 一.cron在3个地方查找配置文件: 1./var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的cron

浅谈Linux下通过find命令进行rm文件删除的小技巧

我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作写成脚本,就会遇到一些麻烦,本文通过一个例子为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自动化的脚本,有以下的find语句,每天运行以删除某个目录下7天以前的文件或目录,