mongodb sharding分片模式的集群数据库,日志治理缺失导致写入数据库报错MongoWriteConcernException的问题总结(下)

一、接着上文

上文介绍了mongodb sharding的分片集群搭建,本文侧重于讲述日志治理。

这里使用linux自带的日志治理工具logrotate,无论是哪个端口的进程,其日志治理方式类似。

查看/data目录下的文件大小,

du -hs *

二、Logrotate配置

在这里插入图片描述

#vi /etc/logrotate.d/mongo12000 
/data/mongodb12000/log/mongo12000.log {
        daily    
        copytruncate
        notifempty
        rotate 21
        dateext
        compress
        delaycompress
        missingok
        sharedscripts
        postrotate
                if [ -f /data/mongodb12000/run/mongo12000.pid ]; then
                        kill -SIGUSR1 `cat /data/mongodb12000/run/mongo12000.pid`
                fi
        endscript
}

进程ID文件存储在/data/mongodb12000/run/mongo12000.pid,见下:

在这里插入图片描述
在这里插入图片描述

[root@mongo_test03 ~]# ll /data/mongodb12000/run/mongo12000.pid
-rw-r--r-- 1 mongo mongo 5 Jun 25  2023 /data/mongodb12000/run/mongo12000.pid

[root@mongo_test03 ~]# cat /data/mongodb12000/run/mongo12000.pid
1445

关于进程ID,
在这里插入图片描述

[root@mongo_test03 ~]# ps -ef | grep 12000
mongo     1445     1  9  2023 ?        25-05:17:11 /usr/local/mongodb-linux-x86_64-rhel70-4.0.27/bin/mongod -f /data/mongodb12000/cnf/mongo12000.cnf

查看配置文件

cat /data/mongodb12000/cnf/mongo12000.cnf
#日志目录
logpath = /data/mongodb12000/log/mongo12000.log
#进程ID文件
pidfilepath = /data/mongodb12000/run/mongo12000.pid

三、遇到的问题

1、cnf文件里配置的日志文件与logrotate.d配置的进程ID不一致

/data/mongodb40000/cnf/mongo40000.cnf 中的配置错误,
修改前:

#日志目录
logpath = /data/mongodb40000/log/mongo11000.log
#进程ID文件
pidfilepath = /data/mongodb40000/run/mongo11000.pid

在这里插入图片描述

[root@mongo_test03 log]# ll
total 14775004
-rw-r--r-- 1 mongo mongo 15129517397 Mar 29 10:24 mongo11000.log
-rw------- 1 mongo mongo       81082 Mar 29 12:25 mongo40000.log

[root@mongo_test03 log]# pwd
/data/mongodb40000/log

[root@mongo_test03 log]# cat /data/mongodb40000/run/mongo11000.pid
1221

这种错误,主要还是因为复制mongo40000.cnf的时候,遗漏修改端口号导致。

2、mongos 的日志治理失败

在这里插入图片描述

[root@mongo_test03 logrotate.d]# cat /etc/logrotate.d/mongo50000 
/data/mongodb50000/log/mongo50000.log {
        daily
        copytruncate
        notifempty
        rotate 7
        dateext
        compress
        delaycompress
        missingok
        sharedscripts
        postrotate
                if [ -f /data/mongodb50000/run/mongo50000.pid ]; then
                        kill -SIGUSR1 `cat /data/mongodb50000/run/mongo50000.pid`
                fi
        endscript
}

而实际上的进程ID文件是 /data/mongodb50000/run/mongos.pid,而非上面的/data/mongodb50000/run/mongo50000.pid。

所以导致logrotate未能对其进行日志治理,文件大小居然都1.6GB了。

在这里插入图片描述

而实际上/data/mongodb50000/run/目录下的进程ID文件名是mongos.pid,见下:
在这里插入图片描述

[root@mongo_test03 logrotate.d]# cat /data/mongodb50000/run/mongos.pid
1683
[root@mongo_test03 logrotate.d]# ps -ef | grep 50000
mongo     1683     1  0  2023 ?        1-15:24:17 /usr/local/mongodb-linux-x86_64-rhel70-4.0.27/bin/mongos -f /data/mongodb50000/cnf/mongo50000.cnf

修改文件/etc/logrotate.d/mongo50000中的mongo50000.pid为mongos.pid。

四、定期执行治理

# vi /etc/crontab

30 2 * * * root /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

在这里插入图片描述
日志保留21天,最早保存日志的日期是20240308,并且压缩为gz,见上。

至此,mongodb的日志治理就介绍完了。

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 09:52:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 09:52:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 09:52:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 09:52:05       20 阅读

热门阅读

  1. MongoDB集成springboot

    2024-03-30 09:52:05       17 阅读
  2. 怎么学习写代码?

    2024-03-30 09:52:05       20 阅读
  3. Redisson源码研究

    2024-03-30 09:52:05       21 阅读
  4. 2024.3.23-25@spring框架学习笔记

    2024-03-30 09:52:05       17 阅读
  5. rectangle2

    2024-03-30 09:52:05       16 阅读
  6. UE4 quest3平台网络不稳定问题排查及解决

    2024-03-30 09:52:05       29 阅读
  7. vscode插件

    2024-03-30 09:52:05       19 阅读
  8. Python数据库编程全指南SQLite和MySQL实践

    2024-03-30 09:52:05       19 阅读
  9. 【统计】什么事 R 方

    2024-03-30 09:52:05       20 阅读
  10. 机器学习概念、步骤、分类和实践

    2024-03-30 09:52:05       18 阅读