当前位置: 首页 > news >正文

MongoDB-部署PSA(一主一从一仲裁)架构复制集群

目录

    • 环境信息
    • 环境准备
    • mongoDB配置&部署
    • 复制集群搭建

环境信息

IP端口节点
10.0.0.127017
10.0.0.227017
10.0.0.327017仲裁

环境准备

1.关闭THP

  • Transparent Huge Pages 简称 THP。透明大页面(THP)是一种Linux内存管理系统,通过使用更大的内存页面,可以减少具有大量内存的计算机上的Translation Lookaside Buffer(TLB)查找的开销。但是,数据库工作负载通常在THP上表现不佳,因为它们往往具有稀疏而不是连续的内存访问模式。 您应该在Linux机器上禁用THP以确保使用MongoDB获得最佳性能。
# 创建规则目录
root # mkdir /etc/tuned/no-thp
#创建规则配置文件
root # vim /etc/tuned/no-thp/tuned.conf
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
#启动该规则(重启后可生效)
root # tuned-adm profile no-thp
#临时生效方法
root # echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled
root # echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag
#查看当前THP是否关闭(necer表示关闭)
root # cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
root # cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

2.创建MongoDB用户,并禁止登录。

root # groupadd mongodb 
root # useradd  -r -g mongodb -s /bin/false mongodb

3.设置mongodb用户的ulimit

cat> /etc/security/limits.d/mongodb.conf <<EOF
mongodb soft nofile 65535
mongodb hard nofile 65535
mongodb soft nproc 65535
mongodb hard nproc 65535
mongodb soft memlock unlimited 
mongodb hardmemlock unlimited
EOF

4.安装MongoDB所需要的依赖包

root # yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl libpcap lm_sensors-libs net-snmp net-snmp-agent-libs openldap openssl rpm-libs tcp_wrappers-libs -y

mongoDB配置&部署

1.创建MongoDB目录

root # mkdir /data/mongodb
root # mkdir /data/mongodb/base
root # mkdir /data/mongodb/{data,conf,log}
root # mkdir /data/mongodb/data/27017
root # mkdir /data/mongodb/conf/27017
root # mkdir /data/mongodb/log/27017
#目录结构
root # tree /data/mongodb/
/data/mongodb/
├── base
├── conf
│   ├── 27017
├── data
│   ├── 27017
└── log├── 27017

2.下载并解压mongodb安装包

root # wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-5.0.28.tgz
root # tar xf mongodb-linux-x86_64-enterprise-rhel70-5.0.28.tgz  -C /data/mongodb/base/ --strip-components=1
#对mongodb目录进行授权
root # chown -R mongodb.mongodb /data/mongodb/

3.添加mongodb环境变量

[root@MongoDB~]# vim /etc/profile
export MONGODB_HOME=/data/mongodb/base
export PATH=$MONGODB_HOME/bin:$PATH
[root@MongoDB~]# source /etc/profile

4.添加mongodb的keyfile文件

#进入到conf目录
root # cd /data/mongodb/conf/27017
#生成keyfile文件
root # openssl rand -base64 756 >keyfile
#对keyfile文件进行授权
root # chmod 400 keyfile 
#将keyfile文件传输到其他两个节点的conf目录,三个节点的keyfile文件需保持一致
root # scp keyfile root@10.0.0.2: /data/mongodb/conf/27017
root # scp keyfile root@10.0.0.3: /data/mongodb/conf/27017

5.配置mongodb的conf文件

  • 配置文件需要修改项
    • 复制集群名称:replSetName: test
    • 监听地址:bindIp
主:
cat > /data/mongodb/conf/27017/mongodb.conf << EOF
systemLog:destination: filepath: "/data/mongodb/log/27017/mongodb.log"logAppend: true
storage:dbPath: "/data/mongodb/data/27017"directoryPerDB: true					#设置为true,修改数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中。使用此选项,可以配置的MongoDB将数据存储在不同的磁盘设备上,以提高写入吞吐量或磁盘容量。默认为falsejournal:enabled: true						#启用操作日志,以确保写入持久性和数据的一致性,会在dbpath目录下创建journal目录commitIntervalMs: 100
operationProfiling:slowOpThresholdMs: 200mode: slowOpslowOpSampleRate: 1
processManagement:fork: truepidFilePath: "data/mongodb/data/27017/mongod.pid"
net:port: 27017bindIp: 127.0.0.1,10.0.0.1 #填写本地地址以及本机ip
replication:oplogSizeMB: 20480replSetName: test	#复制集名称
security:authorization: enabledkeyFile: "/data/mongodb/conf/27017/keyfile"
EOF副本:
cat > /data/mongodb/conf/27017/mongodb.conf << EOF
systemLog:destination: filepath: "/data/mongodb/log/27017/mongodb.log"logAppend: true
storage:dbPath: "/data/mongodb/data/27017"directoryPerDB: truejournal:enabled: truecommitIntervalMs: 100
operationProfiling:slowOpThresholdMs: 200mode: slowOpslowOpSampleRate: 1
processManagement:fork: truepidFilePath: "data/mongodb/data/27017/mongod.pid"
net:port: 27017bindIp: 127.0.0.1,10.0.0.2 
replication:oplogSizeMB: 20480replSetName: test
security:authorization: enabledkeyFile: "/data/mongodb/conf/27017/keyfile"
EOF仲裁:
cat > /data/mongodb/conf/27017/mongodb.conf << EOF
systemLog:destination: filepath: "/data/mongodb/log/27017/mongodb.log"logAppend: true
storage:dbPath: "/data/mongodb/data/27017"directoryPerDB: truejournal:enabled: truecommitIntervalMs: 100
operationProfiling:slowOpThresholdMs: 200mode: slowOpslowOpSampleRate: 1
processManagement:fork: truepidFilePath: "data/mongodb/data/27017/mongod.pid"
net:port: 27017bindIp: 127.0.0.1,10.0.0.3
replication:oplogSizeMB: 20480replSetName: test
security:authorization: enabledkeyFile: "/data/mongodb/conf/27017/keyfile"
EOF

6.启动MongoDB

#分别启动三台mongodb,先启动主,再到从,再到仲裁。
root # mongod --config /data/mongodb/conf/27017/mongodb.conf 

复制集群搭建

1.初始化主节点,登录mongodb的10.0.0.1:27017节点

root # mongo 127.0.0.1 -port 27017
#执行初始化主节点SQL
> rs.initiate()
test:SECONDARY> rs.isMaster().ismaster
#查看复制集状态
test:PRIMARY> rs.status().members

2.配置用户认证

  • 创建用户规范
    • 管理用户为admin,密码为admin,认证库默认为admin
#登录mongodb的27017节点
root # mongo 127.0.0.1 -port 27017
#进入admin库
test:PRIMARY> use admin
#创建admin用户,密码为admin,认证库为admin
test:PRIMARY> db.createUser({user:"admin",pwd:"admin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
#认证这个用户
test:PRIMARY> db.auth("admin","admin")
#为admin这个用户授予最高权限
test:PRIMARY>  db.grantRolesToUser("admin",[{role:"root",db:"admin"}])
#查看admin用户的权限信息
test:PRIMARY> db.getUser("admin")
#退出登录
cpos:PRIMARY> exit

3.添加副本和仲裁节点,添加副本以及仲裁节点,必须使用管理员权限的用户进行登录执行。

#使用admin用户登录
[root@MongoDB/data/mongodb/conf/27017]# mongo -port 27017 -u "admin" -p "admin" --authenticationDatabase "admin"
#添加副本
test:PRIMARY> rs.add("10.0.0.2:27017")
#添加仲裁节点
test:PRIMARY> rs.addArb("10.0.0.3:27017")
#查看集群状态
test:PRIMARY> rs.status().members
[{"_id" : 0,"name" : "10.0.0.1:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 1304,"optime" : {"ts" : Timestamp(1638327035, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2024-09-01T02:50:35Z"),"syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","electionTime" : Timestamp(1638326325, 2),"electionDate" : ISODate("2024-09-01T02:38:45Z"),"configVersion" : 3,"configTerm" : 1,"self" : true,"lastHeartbeatMessage" : ""},{"_id" : 1,"name" : "10.0.0.2:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 72,"optime" : {"ts" : Timestamp(1638327025, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1638327025, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2024-09-01T02:50:25Z"),"optimeDurableDate" : ISODate("2024-09-01T02:50:25Z"),"lastHeartbeat" : ISODate("2024-09-01T02:50:35.324Z"),"lastHeartbeatRecv" : ISODate("2024-09-01T02:50:35.421Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncSourceHost" : "10.0.0.1:27017","syncSourceId" : 0,"infoMessage" : "","configVersion" : 3,"configTerm" : 1},{"_id" : 2,"name" : "10.0.0.3:27017","health" : 1,"state" : 7,"stateStr" : "ARBITER","uptime" : 30,"lastHeartbeat" : ISODate("2024-09-01T02:50:35.401Z"),"lastHeartbeatRecv" : ISODate("2024-09-01T02:50:35.661Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","configVersion" : 3,"configTerm" : 1}
]

相关文章:

MongoDB-部署PSA(一主一从一仲裁)架构复制集群

目录 环境信息环境准备mongoDB配置&部署复制集群搭建 环境信息 IP端口节点10.0.0.127017主10.0.0.227017从10.0.0.327017仲裁 环境准备 1.关闭THP Transparent Huge Pages 简称 THP。透明大页面&#xff08;THP&#xff09;是一种Linux内存管理系统&#xff0c;通过使用…...

CSS中 特殊类型的选择器 伪元素如何使用

一、什么是伪元素 在 CSS 中&#xff0c;伪元素是一种特殊类型的选择器&#xff0c;它允许你为元素的特定部分添加样式&#xff0c;而这些部分在 HTML 文档中并不实际存在。伪元素通常用于创建装饰性效果&#xff0c;如添加边框、背景、阴影等&#xff0c;而不需要额外的 HTML…...

科技信贷业务怎么寻找客户?

在科技信贷业务领域&#xff0c;寻找客户的痛点主要集中在以下几个方面&#xff1a; 1.风险评估难题&#xff1a;科技型企业尤其是初创企业&#xff0c;往往缺乏足够的历史数据和抵押物&#xff0c;这使得金融机构在评估其信用风险时面临较大挑战。由于科技企业的研发周期长、…...

VM中创建CentOS 7及VM中如何修改DHCP的IP网段

一、创建虚拟机 1新建Centos虚拟机 2类型选择 3版本兼容性选择 4镜像选择 5安装系统选择 6虚拟机的创建路径&#xff08;选择C盘以外且不包含中文名称的路径&#xff09; 7硬件配置选择 网络类型的选择&#xff08;通常情况下选择NAT模式&#xff09; 8剩下的全部按推荐走&…...

mybatis#{}与${}的区别,mybatis关联查询,mybatis动态sql

1.#{}与${}的区别 #{}是占位符&#xff0c;是采用预编译的方式向sql中传值&#xff0c;可以防止sql注入如果我们往sql中传值&#xff0c;可以使用这个&#xff0c;例如这个delete语句 ${}将内容直接拼接到sql语句中&#xff0c;一般不用于传值&#xff0c;可以当作列名&#x…...

K8S(Kubernates) 知识目录

1. 一文了解K8S&#xff08;Kubernates&#xff09; 2. K8S CNI CRI CSI 3. K8S Helm 4. K8S Harbor 5. K8S Operator 6. K8S 服务网格 7. K8S 存储 8. K8S 容器调度 9. K8S 探针 10. K8S Watch 11. K8S 版本发版 12. K8S 资源管理CPU&内存 13. K8S Flannel 1…...

基于Java+SpringBoot+Vue+MySQL的失物招领管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的失物招领管理系统【附源码文档】、前后…...

Mybatis链路分析:JDK动态代理和责任链模式的应用

背景 此前写过关于代理模式的文章&#xff0c;参考&#xff1a;代理模式 动态代理功能&#xff1a;生成一个Proxy代理类&#xff0c;Proxy代理类实现了业务接口&#xff0c;而通过调用Proxy代理类实现的业务接口&#xff0c;实际上会触发代理类的invoke增强处理方法。 责任链功…...

【Spring Boot 3】【Web】解析获取HTTP请求参数

【Spring Boot 3】【Web】解析获取HTTP请求参数 背景介绍开发环境开发步骤及源码工程目录结构背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要…...

conda换源是什么?

换源对于我们在国内的python使用者来说是非常有必要的&#xff0c;之前讲了pip如何换源。 pip更换为国内镜像源的步骤&#xff0c;为什么要更换镜像源 那现在讲一下conda如何换源。 conda换源&#xff08;清华源&#xff09; 有时候&#xff0c;conda虽然和pip共用一个本地…...

英文缩写大全(IT 领域和电子行业制造领域)

英文缩写大全&#xff08;IT 领域和电子行业制造领域&#xff09; 前言一、计算机通用二、WINDOWS三、LINUX四、编程语言1. 前端 / 设计2. JAVA / Android3. PHP4. Python 四、电子行业制造领域五、常识 前言 本文收集了各类英文缩写大全&#xff0c;方便查阅&#xff0c;主要…...

如何将图片左右翻转?8种方法来将图片进行左右翻转

如何将图片左右翻转&#xff1f;在现代数字化的图像处理过程中&#xff0c;图片的方向调整是常见的操作之一。左右翻转图片不仅可以改变图像的视觉效果&#xff0c;还可以用于修正拍摄时的角度问题&#xff0c;或者满足特定设计和排版需求。比如&#xff0c;当你拍摄的照片由于…...

linux:ln用法详解

文章目录 1. 描述2. 语法2.1 硬链接&#xff08;Hard Link&#xff09;2.2. 符号链接&#xff08;Symbolic Link / Soft Link&#xff09; 3. ln 命令的常用选项4. 例子 1. 描述 在 Linux 系统中&#xff0c;ln 命令用于创建硬链接&#xff08;Hard Link&#xff09;或符号链接…...

0基础跟德姆(dom)一起学AI Python进阶02-Python面向对象高级

1 [重点]定义类的几种语法 方式1&#xff1a;类名 在上一章节的学习过程中&#xff0c;我们都使用了这种定义类的语法&#xff1a; properties class 类名: 代码 ... 例如&#xff0c;使用该方式来定义一个老师类。 python # 1.class 类名: # pass class Te…...

【深度学习】softmax 回归的从零开始实现与简洁实现

前言 小时候听过一个小孩练琴的故事&#xff0c;老师让他先弹最简单的第一小节&#xff0c;小孩练了两天后弹不出。接着&#xff0c;老师让他直接去练更难的第二小节&#xff0c;小孩练习了几天后还是弹不出&#xff0c;开始感觉到挫败和烦躁了。 小孩以为老师之后会让他从简…...

Sollong、IO.NET和 Solana,为何参加 WebX 2024活动?

东京王子花园塔酒店 ChainCatcher_携手 DPCapital_XYZ与WebX_Asia共同打造“世界のStaking最大级集结|Tokyo站”盛会&#xff0c;为全球Staking爱好者与行业精英搭建交流合作桥梁&#xff01;全球顶尖Staking项目方、知名区块链机构、行业领袖与企业家将齐聚东京&#xff0c;共…...

3个免费好用的网站,可以转换PDF,提取MP3

今天分享的三个网站&#xff0c;分别用于文件转换PDF&#xff0c;QMC转MP3格式和配色网站。 TOPDF 这个网站是一个在线PDF转换工具&#xff0c;可以快速将文本文件、演示文稿、电子表格和图片转换为PDF格式。它支持多种文件格式&#xff0c;如AZW3、BMP、CHM、CSV、DjVu、DOC、…...

PHP智能匹配轻松预订自习室在线订座系统小程序源码

智能匹配&#xff0c;轻松预订——自习室在线订座系统 &#x1f4da;【开篇&#xff1a;告别排队&#xff0c;迎接智能学习新时代】&#x1f4da; 还在为找不到合适的自习室座位而烦恼吗&#xff1f;是不是每次去图书馆或自习室都要提前好久去排队占位&#xff1f;现在&#…...

构建高效医护人员排班系统:Spring Boot框架的优势

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理医护人员排班系统的相关信息成为必然。开发…...

深度学习——引言

一、机器学习的关键因素 1.1 数据 每个数据集由一 个个样本组成&#xff0c;大多情况下&#xff0c;数据遵循独立同分布。通常每个样本由一组特征属性组成。 好的数据集 { 数据样本多 正确的数据 ( g a r b a g e i n , g a r b a g e o u t ) 好的数据集 \begin{cases} 数据…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...