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

一、接着上文

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

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

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

du -hs *

二、Logrotate配置

在这里插入图片描述

#vi /etc/logrotate.d/mongo12000 
/data/mongodb12000/log/mongo12000.log {daily    copytruncatenotifemptyrotate 21dateextcompressdelaycompressmissingoksharedscriptspostrotateif [ -f /data/mongodb12000/run/mongo12000.pid ]; thenkill -SIGUSR1 `cat /data/mongodb12000/run/mongo12000.pid`fiendscript
}

进程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 {dailycopytruncatenotifemptyrotate 7dateextcompressdelaycompressmissingoksharedscriptspostrotateif [ -f /data/mongodb50000/run/mongo50000.pid ]; thenkill -SIGUSR1 `cat /data/mongodb50000/run/mongo50000.pid`fiendscript
}

而实际上的进程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 {dailycopytruncatenotifemptyrotate 7dateextcompressdelaycompressmissingoksharedscriptspostrotateif [ -f /data/mongodb50000/run/mongos.pid ]; thenkill -SIGUSR1 `cat /data/mongodb50000/run/mongos.pid`fiendscript
}

四、定期执行治理

# vi /etc/crontab30 2 * * * root /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

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

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

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

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

相关文章

每日一题(相交链表 )

欢迎大家来我们主页进行指导 LaNzikinh-CSDN博客 160. 相交链表 - 力扣(LeetCode) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节…

linux 中的syslog的含义和用法

在Linux系统中,syslog是一种系统日志服务,用于收集、存储和管理系统和应用程序生成的日志消息。syslog服务负责记录系统的运行状态、错误信息、警告、调试信息等,以便系统管理员可以监控系统的健康状况、故障排查和性能优化。 含义和作用&am…

RUST使用crates.io上的依赖完整教程

1.打开crates.io 2.搜索要使用的依赖,如rand 点击包名,进入包详情页面: 添加依赖方法有两种 1.使用cargo命令 2.直接修改Cargo.toml 使用cargo命令操作如下: 在工程目录执行如下命令: cargo add rand 执行完成后如自动向Cargo.toml中添加依赖如下: 手动修改Cargo.toml是…

漏洞挖掘 | ruoyi框架管理系统漏洞

前言: 在挖src的时候,可以通过信息收集收集弱口令,然后通过后台弱口令进入后台: 发现一个弱口令进去后: 【魔方老师提醒才发现,这个蓝色的草丛其实可以大致判断是若依系统】 看这界面,是不是…

XSS伪协议

XSS伪协议简介 XSS(跨站脚本攻击)中的伪协议是指利用一些浏览器允许的特殊协议来执行恶意脚本的一种方式。常见的伪协议包括 javascript:, data:, vbscript: 等。 攻击者可以通过构造特定的URL,将恶意脚本注入到网页中,从而实现…

基于8086密码锁可修改仿真

**单片机设计介绍,基于8086密码锁可修改仿真 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086的密码锁可修改仿真设计是一个结合了微处理器控制、密码管理和仿真技术的综合性项目。通过此设计,用户可以设定和…

海外媒体宣发技巧解析从而提升宣发效果

在当今全球化的媒体环境下,海外媒体宣发是企业和品牌推广的重要手段。然而,要在海外市场取得成功,一味地复制国内的宣发策略是行不通的。要想提升宣发效果,就必须了解并掌握一些海外媒体宣发的技巧。世媒讯一家从事海内外媒体的推…

JSON与AJAX:网页交互的利器

在现代Web开发中,JSON(JavaScript Object Notation)和AJAX(Asynchronous JavaScript and XML)是两项不可或缺的技术。它们共同为网页提供了动态、实时的数据交互能力,为用户带来了更加流畅和丰富的体验。本…

git配置SSH 密钥

git配置SSH 密钥 1.window配置ssh1.安装ssh2.安装 Git(安装教程参见安装Git)并保证版本大于 1.9![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e59f4e16b83c45649f1d9d7bd6bf92c0.png)3.SSH 尽量保持最新,6.5之前的版本由于使用…

用ChatGPT出题,完全做不完

最近小朋友正在学习加减法,正好利用ChatGPT来生成加减法练习题,小朋友表示够了,够了,完全做不完。本文将给大家介绍如何利用ChatGPT来生成练习题。 尚未获得ChatGPT的用户,请移步:五分钟开通GPT4.0。 角色…

Hbase常用命令选择题

题目:在HBase Shell中,哪个命令用于列出所有表? A. list B. show C. display D. tables 答案:A 解析:在HBase Shell中,list和tables命令都可以用来列出所有的表。但在较新版本的HBase中,推荐使用…

C++20之Concept

C20之Concept(概念部分,之一)_c concept-CSDN博客 C20之Concpet(概念部分,之二)_c concept-CSDN博客

未来AI技术的创业机遇:探索科技创新的前沿领域

在当今科技创新的浪潮中,人工智能(AI)技术已成为最引人注目的前沿领域之一。AI技术不仅在科学研究中占据着举足轻重的地位,而且在商业应用中也展现出了巨大的潜力,为创业者提供了前所未有的机会和挑战。本文将探讨随着…

Cadence HDL原理图创建时多个VCC或GND处理方法

1.先new一个 2. 下面的Global pin 的name处不要直接使用GND,不然后期画图容易混淆。 数字地使用VSS;模拟地使用VEE等 3. 之后继续按照普通原理图进行绘制即可。 原理图封装绘制 4. 最后在原理图中要对该网络进行说明!!&#…

判断点在多边形内的算法

在计算几何中,判定点是否在多边形内,是个非常有趣的问题。通常有两种方法: 一、Crossing Number(交叉数) 它计算从点P开始的射线穿过多边形边界的次数。当“交叉数”是偶数时,点在外面;当它是奇数时&…

【蓝桥杯第十三届省赛B组】(详解)

九进制转十进制 #include <iostream> #include<math.h> using namespace std; int main() {cout << 2*pow(9,3)0*pow(9,2)2*pow(9,1)2*pow(9,0) << endl;return 0; }顺子日期 #include <iostream> using namespace std; int main() {// 请在此…

为什么很多程序员都建议使用 Linux?

一个好的操作系统应该是有什么问题普通用户搞不定&#xff0c;但程序员肯定搞得定。Linux就是这样的操作系统。 Windows嘛&#xff0c;出问题了普通用户搞不定&#xff0c;程序员也搞不定&#xff0c;某些运维能搞定&#xff0c;某些只有m$才搞定。在windows面前程序员都得向m…

程序员35岁会失业吗?会!!!!

程序员35岁会失业吗&#xff1f; 35岁被认为是程序员职业生涯的分水岭&#xff0c;许多程序员开始担忧自己的职业发展是否会受到年龄的限制。有人担心随着年龄的增长&#xff0c;技术更新换代的速度会使得资深程序员难以跟上&#xff1b;而另一些人则认为&#xff0c;丰富的经…

【二叉树】Leetcode 114. 二叉树展开为链表【中等】

二叉树展开为链表 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…

dbeaver连接 MySQL 报错处理

场景&#xff1a; 点击连接 MySQL 的时候出现 Public Key Retrieval is not allowed 解决 编辑连接-》驱动属性设置&#xff0c;设置 true 点击测试连接如下&#xff1a; 原因分析&#xff1a; 在 MySQL 中&#xff0c;“Public Key Retrieval” 参数通常与 SSL 连接有关…