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

news2024/11/27 4:00:02

一、接着上文

上文介绍了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 的日志治理失败

在这里插入图片描述

  • 错误的logrotate配置
[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。

  • 日志文件的路径错误,导致日志治理失败。

mongos的日志文件路径是在/data/mongodb50000/log/mongos.log, 而非/data/mongodb50000/log/mongo50000.log。需要再次修改/etc/logrotate.d/mongo50000。最终如下:

# 文件名可以是mongo50000,也可以是mongos, 换句话说,日志治理和文件名无关。
[root@mongo_test03 logrotate.d]# cat /etc/logrotate.d/mongo50000 
# 日志文件的路径,需要修改为正确的路径
/data/mongodb50000/log/mongos.log {
        daily
        copytruncate
        notifempty
        rotate 7
        dateext
        compress
        delaycompress
        missingok
        sharedscripts
        postrotate
                if [ -f /data/mongodb50000/run/mongos.pid ]; then
                        kill -SIGUSR1 `cat /data/mongodb50000/run/mongos.pid`
                fi
        endscript
}

四、定期执行治理

# vi /etc/crontab

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用方案 | 内置ALC的音频前置放大器D2538A和D3308芯片

一、应用领域 D2538A和D3308是芯谷科技推出的两款内置ALC(音频限幅器)的前置音频放大器芯片,其中D2538A为单通道,D3308为双通道,它特别适用于胎心仪、个人医疗防护、立体声收录机、盒式录音机等涉及音频放大与限幅的产…

算法——矩阵,被围绕的区域

. - 力扣(LeetCode) 最开始也是考虑使用dfs,对于矩阵中的每个点,如果能到达边界的O,则跳过继续dfs。否则如果上下左右四个方向都无法到达边界的O,则说明当前的无法到达,在一个set中记录他的行数…

聚焦后成本时代赢销之道 纷享销客2024西北客户大会西安成功举办

纷享销客2024年西北客户大会西安站成功举办!此次大会以《后成本时代的赢销之道》为主题,吸引了百余位客户及合作伙伴参会。 纷享销客创始人兼CEO罗旭发表演讲,呼吁一起凝心聚力,共创未来。纷享销客产品副总裁&制造行业中心总…

扫地机器人(蓝桥杯)

文章目录 扫地机器人题目描述解题思路二分贪心 扫地机器人 题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示。 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中。已知扫地机器人每分钟可以移动…

Python 自学(九) 之异常处理,文件及目录操作

目录 1. try ... except ... else ... finally 排列 P231 2. write, read, seek, readline, readlines 基本文件操作 P245 3. os模块 基本目录操作 P249 4. os.path 模块 复杂目录操作 P250 5. os 模块 高…

YoloV8改进策略:BackBone改进|GCNet(独家原创)|附结构图

摘要 本文使用GCNet注意力改进YoloV8,在YoloV8的主干中加入GCNet实现涨点。改进方法简单易用,欢迎大家使用! 论文:《GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond》 非局部网络(NLNet)通过为每个查…

郭天祥新概念51单片机(第四期读书笔记)

时钟周期、状态周期、机器周期、指令周期与晶振频率之间的关系 1、晶振频率与脉冲的关系 假设单片机的晶振频率是12MHz,那么它的一个脉冲为1/12微秒;晶振单位时间发出的脉冲则为: 12 ∗ 1 0 6 12*10^6 12∗106。 假设单片机的晶振频率是4MH…

通过IP定位准确地址:原理、应用与局限性

在数字化时代,IP地址不仅是网络设备的标识符,同时也承载着地理位置信息。通过IP定位技术,我们可以根据IP地址获取到相应的地理位置信息,这在网络安全、数据分析、广告推送等领域有着广泛的应用。虎观代理将深入探讨通过IP定位准确…

Oracle EBS AR接口和OM销售订单单价为空数据修复

最近,用户使用客制化Web ADI 批量导入销售订单行功能,把销售订单行的单价更新成空值,直到发运确认以后,财务与客户对帐才发现大量销售订单的单价空,同时我们检查AR接口发现销售订单的单价和金额均为空。 前提条件 采用PAC成本方式具体问题症状 销售订单行的单价为空 Path:…

Spring面试常见问题

目录 1、为什么要用Spring框架?2、有了spring为什么又出现了 springboot?3、springboot出现后为什么又出现了spring cloud?4、SpringBoot自动配置(重点)5、SpringBoot启动流程(重点)6、简单谈一…

Latex绘制多行多TSNE列子图

Latex绘制多行多列TSNE子图 问题描述解决办法 问题描述 写论文需要绘制TSNE可视化图像。 解决办法 代码如下 \usepackage{subfigure}\begin{figure*}\centering\small\subfigure[aaa]{\includegraphics[width0.18\textwidth]{Figure/MFPT_v5_train_tsne_user0_bs0.png}}\su…

生态系统服务功能社会价值评估:当量因子法、InVEST、SolVES模型等多技术融合的探索与实践

当量因子法是将生态系统服务功能分类, 以可量化的标准构建不同类型生态系统各种服务功能的价值当量, 结合生态系统的分布面积进行评估,该方法数据量少, 较为直观易用, 适用于区域和全球尺度生态系统服务价值的评估。基于GIS平台的InVEST模型以空间数据为基础,量化多…

gin源码分析(1)--初始化中间件,路由组与路由树

目标 关于gin.Default(),gin.New(),gin.Use()group与子group之间的关系,多group与middleware之间关系中间件的类型,全局,group,get,不同类型的中间件什么时候执行。中间件 next 和abort行为如何…

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。 一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距. 另外一种是calibra…

vue 响应式原理 Object.defineProperty(obj,‘属性名A‘,options);

目录 self简单讲解1. 视图影响数据2. 数据影响视图3. 视图数据双向影响页面展示 百度 self 简单讲解 get和set方法是ES5中提供的,因为是方法,所以可以进行判断,get 一般是要通过 return 返回的;而 set 是设置,不用返回…

回收站删除的文件在哪里?专业恢复方法分享(最新版)

“我很想知道我从回收站删除的文件被保存在哪里了呢?我刚刚不小心清空了回收站,现在想将它们恢复,应该怎么操作呢?谁能教教我怎么从回收站恢复文件?” 回收站,作为Windows操作系统中的一个重要组件&#xf…

探索AI技术创业的三大机遇

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 方向一:行业解决方案 方向二:智能产品和服务 方向三:教育和培训 结语 我的其他博客 前言…

京东云明修“价格战”,暗渡“政企云”

文|白 鸽 编|王一粟 云计算行业越来越“卷”,一边卷大模型,一边卷价格。 2024 刚一开年,阿里云就宣布百余款产品大降价,最高降幅达55%。在阿里云宣布降价后,京东云紧随其后宣布&#xff0…

80后、90后记忆中的经典软件正在老去,新型平台在悄然崛起

当今软件领域,可谓是瞬息万变。 更新迭代频繁,部分软件稳坐电脑桌面,而有些,则沦为记忆深处的图标,在岁月长河中悄然“凋零”。 试问,那些曾属于80、90后独特记忆的经典软件,你还记得多少&…

银河麒麟操作系统Kylin Linux 离线安装Nginx1.21.5

一、查看操作系统版本号 nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.15.v2207.ky10.x86_64Build: Kylin Linux Advanced Server release V10 (SP3) /(Lance)-x86_64-Build20/…