2024年单服务器部署Mongodb三节点副本集自动化部署脚本

该脚本是为了方便自己学习和工作中部署服务器从而节省时间进行编写,目前能正常部署,创建集群,管理员用户,以及连接都没问题,但是没有开启验证,后续找时间补充。

完整的教程请参考一下我写的技术文章。

2024年单服务器部署Mongodb三节点副本集保姆级教程_mongodb三节点部署-CSDN博客

按照下面流程操作

centos7.9 根目录创建一个sh目录,并创建   mongodb4.4.27.sh 文件

然后 vi打开

vi   mongodb4.4.27.sh

将下面的脚本复制进去,再保存,

然后当前目录执行

sh   mongodb4.4.27.sh

下面是自动部署脚本代码

# 初始化变量
RETRY_INTERVAL=5 # 检查间隔时间,单位为秒
MAX_RETRIES=30 # 最大重试次数# 升级系统
echo "正在升级系统..."
yum update -y# 安装必要的软件包
echo "正在安装必要的软件包..."
yum -y install gcc gcc-c++ openssl-devel zlib-devel openssl-devel pcre-devel bzip2* make# 创建节点目录
echo "正在创建节点目录..."
mkdir -p /mongodbData/node01/{conf,data,logs}
mkdir -p /mongodbData/node02/{conf,data,logs}
mkdir -p /mongodbData/node03/{conf,data,logs}# 进入 mongodbData 文件夹
cd /mongodbData# 下载MongoDB并解压
echo "正在下载并安装数据库..."
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.27.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.27.tgz
mv mongodb-linux-x86_64-rhel70-4.4.27 /usr/local/share/mongodb# 环境配置
echo "正在配置环境变量..."
echo 'export PATH=/usr/local/share/mongodb/bin:$PATH' >> /etc/profile
source /etc/profile# 验证安装情况
mongo --version# 创建配置文件
echo "正在创建配置文件/mongodbData/node01/conf/mongod.conf  ..."cat > /mongodbData/node01/conf/mongod.conf <<EOFoperationProfiling:mode: all                               # 设置性能分析模式为记录所有操作slowOpThresholdMs: 1000                 # 定义操作执行超过1000毫秒时被认为是慢操作
systemLog:destination: file                            # 日志输出目的地设置为文件path: /mongodbData/node01/logs/mongod.log    # 指定日志文件的路径logAppend: true                              # 启用日志追加模式,新日志将追加到现有文件中verbosity: 1                                 # 日志详细级别设置为1logRotate: rename                            # 日志轮转策略设置为重命名旧文件
storage:dbPath: /mongodbData/node01/data         # 数据库文件存储路journal:enabled: true                          # 启用日志,以支持崩溃恢复wiredTiger:engineConfig:cacheSizeGB: 4                     # WiredTiger存储引擎的缓存大小设置为4GB
processManagement:fork: true                                       # 启用分叉模式运行MongoDB服务pidFilePath: /mongodbData/node01/mongod.pid      # 指定PID文件路径
net:bindIpAll: true                                  # 监听所有网络接口port: 27017                                      # MongoDB服务监听的端口
replication:oplogSizeMB: 500                        # 操作日志大小设置为500MBreplSetName: mongodbData                # 指定复制集名称EOF
echo "正在创建配置文件/mongodbData/node02/conf/mongod.conf  ..."cat > /mongodbData/node02/conf/mongod.conf <<EOFoperationProfiling:mode: all                               # 设置性能分析模式为记录所有操作slowOpThresholdMs: 1000                 # 定义操作执行超过1000毫秒时被认为是慢操作
systemLog:destination: file                            # 日志输出目的地设置为文件path: /mongodbData/node02/logs/mongod.log    # 指定日志文件的路径logAppend: true                              # 启用日志追加模式,新日志将追加到现有文件中verbosity: 1                                 # 日志详细级别设置为1logRotate: rename                            # 日志轮转策略设置为重命名旧文件
storage:dbPath: /mongodbData/node02/data         # 数据库文件存储路journal:enabled: true                          # 启用日志,以支持崩溃恢复wiredTiger:engineConfig:cacheSizeGB: 4                     # WiredTiger存储引擎的缓存大小设置为4GB
processManagement:fork: true                                       # 启用分叉模式运行MongoDB服务pidFilePath: /mongodbData/node02/mongod.pid      # 指定PID文件路径
net:bindIpAll: true                                  # 监听所有网络接口port: 27018                                      # MongoDB服务监听的端口
replication:oplogSizeMB: 500                        # 操作日志大小设置为500MBreplSetName: mongodbData                # 指定复制集名称EOFecho "正在创建配置文件/mongodbData/node03/conf/mongod.conf  ..."cat > /mongodbData/node03/conf/mongod.conf <<EOFoperationProfiling:mode: all                               # 设置性能分析模式为记录所有操作slowOpThresholdMs: 1000                 # 定义操作执行超过1000毫秒时被认为是慢操作
systemLog:destination: file                            # 日志输出目的地设置为文件path: /mongodbData/node03/logs/mongod.log    # 指定日志文件的路径logAppend: true                              # 启用日志追加模式,新日志将追加到现有文件中verbosity: 1                                 # 日志详细级别设置为1logRotate: rename                            # 日志轮转策略设置为重命名旧文件
storage:dbPath: /mongodbData/node03/data         # 数据库文件存储路journal:enabled: true                          # 启用日志,以支持崩溃恢复
processManagement:fork: true                                       # 启用分叉模式运行MongoDB服务pidFilePath: /mongodbData/node03/mongod.pid      # 指定PID文件路径
net:bindIpAll: true                                  # 监听所有网络接口port: 27019                                      # MongoDB服务监听的端口
replication:oplogSizeMB: 500                        # 操作日志大小设置为500MBreplSetName: mongodbData                # 指定复制集名称EOFecho "休眠几秒钟..."
sleep 10# 启动MongoDB实例
echo "正在启动MongoDB实例..."
mongod -f /mongodbData/node01/conf/mongod.conf && mongod -f /mongodbData/node02/conf/mongod.conf && mongod -f /mongodbData/node03/conf/mongod.conf# 配置MongoDB集群
echo "正在配置MongoDB集群..."
mongo --eval "rs.initiate({_id: 'mongodbData', members: [{_id: 0, host: '127.0.0.1:27017'}, {_id: 1, host: '127.0.0.1:27018'}, {_id: 2, host: '127.0.0.1:27019', arbiterOnly: true}]});"echo "休眠几秒钟..."
sleep 15# 验证集群状态
echo "正在验证集群状态..."
mongo --eval "rs.status();"echo "休眠几秒钟..."
sleep 10# 初始化复制集(如果尚未初始化)
mongo --eval "rs.initiate()"# 检查复制集状态的函数
check_replica_set_status() {echo "检查复制集状态..."mongo --quiet --eval "rs.status()" | grep '"ok" : 1'return $?
}# 初始化重试次数计数器
retries=0# 循环检查复制集状态
until check_replica_set_status; doretries=$((retries+1))if [ $retries -eq $MAX_RETRIES ]; thenecho "超过最大重试次数,复制集可能未成功初始化。"exit 1fiecho "复制集尚未就绪,等待${RETRY_INTERVAL}秒后重试..."sleep $RETRY_INTERVAL
doneecho "复制集已成功初始化。"
echo "复制集已成功初始化。"
echo "复制集已成功初始化。"# 从这里开始执行需要复制集就绪的其他操作,例如创建用户等。# 休眠几秒钟等待复制集初始化完成
echo "休眠几秒钟..."
sleep 10echo "创建管理员角色..."
echo "创建管理员角色..."
echo "创建管理员角色..."mongo --port 27017 admin --eval "db.createUser({user:'root',pwd:'root_jY_2021',roles:[{role:'readWriteAnyDatabase',db:'admin'},{role:'dbAdminAnyDatabase',db:'admin'},{role:'userAdminAnyDatabase',db:'admin'}]}); db.createUser({user:'suroot',pwd:'suroot_jY_2021',roles:[{role:'clusterAdmin',db:'admin'},{role:'clusterManager',db:'admin'},{role:'clusterMonitor',db:'admin'}]}); "echo "休眠几秒钟..."
sleep 5echo "检查管理员角色..."
echo "检查管理员角色..."
echo "检查管理员角色..."mongo --port 27017 admin --eval "db.auth('root', 'root_jY_2021'); db.system.users.find(); "echo "休眠几秒钟..."
sleep 10# 关闭仲裁节点 (27019)
echo "正在关闭仲裁节点(27019)..."
mongo --port 27019 admin --eval "db.shutdownServer()"echo "休眠几秒钟..."
sleep 10# 关闭从节点 (27018)
echo "正在关闭从节点(27018)..."
mongo --port 27018 admin --eval " db.auth('suroot', 'suroot_jY_2021'); db.shutdownServer()"echo "休眠几秒钟..."
sleep 30# 最后关闭主节点 (27017)
echo "正在关闭主节点(27017)..."
mongo --port 27017 admin --eval "db.auth('suroot', 'suroot_jY_2021');  db.shutdownServer()"echo "休眠几秒钟..."
sleep 30# 生成keyFile
echo "正在生成keyFile并分发..."
openssl rand -base64 756 > /mongodbData/node01/conf/access.key
chmod 400 /mongodbData/node01/conf/access.key
cp /mongodbData/node01/conf/access.key /mongodbData/node02/conf/
cp /mongodbData/node01/conf/access.key /mongodbData/node03/conf/# 再次启动MongoDB实例以应用安全设置
mongod -f /mongodbData/node01/conf/mongod.conf && mongod -f /mongodbData/node02/conf/mongod.conf && mongod -f /mongodbData/node03/conf/mongod.confsleep 30# mongod -f /mongodbData/node01/conf/mongod.conf
# mongod -f /mongodbData/node02/conf/mongod.conf
# mongod -f /mongodbData/node03/conf/mongod.confecho "部署结束。"

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

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

相关文章

渲染效果图有哪几种分类?效果图为什么用云渲染更快

云渲染利用了集群化的云端服务器资源&#xff0c;通过并行计算充分发挥了高性能硬件的优势&#xff0c;显著提升了渲染的速度。这一技术特别适用于处理规模庞大或细节丰富的渲染任务&#xff0c;在缩短项目完成时间方面表现卓越。无论是用于为建筑提供精确的可视化效果图&#…

【Python Scrapy】分布式爬虫利器

在当今信息爆炸的时代&#xff0c;获取大规模数据对于许多应用至关重要。而分布式爬虫作为一种强大的工具&#xff0c;在处理大量数据采集和高效爬取方面展现了卓越的能力。 本文将深入探讨分布式爬虫的实际应用场景&#xff0c;通过代码示例演示其在提升爬取效率、保障系统稳定…

牛刀小试 - C++ 学生信息管理系统

参考文档&#xff1a; C实现&#xff1a;学生管理系统&#xff08;详细解析&#xff09; 关于switch中的default里面的break是否可以省略这件事 需求要求&#xff1a; &#xff08;1&#xff09;增加记录 &#xff08;2&#xff09;查找记录 &#xff08;3&#xff09;删除…

FFmpeg进阶-给视频添加马赛克效果

很多时候为了隐藏视频中的敏感信息如人脸、身份证号、车牌号等,我们会采用马赛克算法对视频帧中的一部分内容进行处理。这里介绍一下如何采用FFmpeg实现马赛克效果。 马赛克效果算法的原理如下: 1.分块处理:首先将图像划分为多个小块或区域 2.像素替换:对于每个小块,算法会将…

【Windows11】内存使用率只有总内存容量的一半

硬件配置&#xff1a;2根16G的内存条&#xff08;金百达DDR4 3600, 海力士颗粒&#xff0c;灯条刃&#xff09;&#xff0c;插在2和4通道上 系统配置&#xff1a;windows11 问题描述&#xff0c;我和这位网友的问题一模一样&#xff1a; 系统32G内存&#xff0c;开机完全识别&…

实习日志17

1.测试公司服务器 1.1.太卡了&#xff0c;点一下卡半天 上传项目源码和文件&#xff1a; 将活字格项目源码和所有相关文件上传到服务器的指定目录。可以使用向日葵远程控制或者版本控制系统来进行文件上传。 重新配置活字格项目&#xff1a; 根据服务器环境&#xff0c;需要对…

Java 学习和实践笔记(14):用表格来理解类、对象、属性以及动作(方法)很容易

OOP :面向对象编程&#xff0c;object oriented programming. 用表格就可以很好地理解类、对象、属性、以及动作这些概念。 一个表&#xff08;结构&#xff09;就对应一个类&#xff08;结构&#xff09;。所以凡叫什么类&#xff0c;自己就在心里把它叫什么表。反过来&…

vue 非父子通信-event bus 事件总线

1.作用 非父子组件之间&#xff0c;进行简易消息传递。(复杂场景→ Vuex) 2.步骤 创建一个都能访问的事件总线 &#xff08;空Vue实例&#xff09; import Vue from vue const Bus new Vue() export default Bus A组件&#xff08;接受方&#xff09;&#xff0c;监听Bus的…

【图与网络数学模型】3.Ford-Fulkerson算法求解网络最大流问题

【图与网络数学模型】3.Ford-Fulkerson算法求解网络最大流问题 一、网络流模型1. 概述2. 可行流3. 增广链 二、示例1. 最大流问题2. Alternate Formulation&#xff1a;最小截量问题 三、Ford-Fulkerson 算法1. 导入库2. 初始化残差图3. 定义查找增广路径4. 定义循环5. 程序运行…

ubuntu22.04@Jetson Orin Nano之OpenCV安装

ubuntu22.04Jetson Orin Nano之OpenCV安装 1. 源由2. 分析3. 证实3.1 jtop安装3.2 jtop指令3.3 GPU支持情况 4. 安装OpenCV4.1 修改内容4.2 Python2环境【不需要】4.3 ubuntu22.04环境4.4 国内/本地环境问题4.5 cudnn版本问题 5. 总结6. 参考资料 1. 源由 昨天用Jetson跑demo程…

《英伟达-本地AI》--NVIDIA Chat with RTX-本机部署

阿丹&#xff1a; 突然发现公司给配置的电脑是NVIDIA RTX 4060的显卡&#xff0c;这不搞一搞本地部署的大模型玩一玩&#xff1f;&#xff1f;&#xff1f; 从0-》1记录一下本地部署的全过程。 本地模型下载地址&#xff1a; Build a Custom LLM with Chat With RTX | NVIDIA…

虚拟机安装Centos7迷你版

虚拟机安装Centos7迷你版 迷你版较常规版精简了很多功能&#xff0c;所以体积也小了很多&#xff0c;喜欢自定义安装的可以选择迷你版 参考文章&#xff1a; VirtualBox虚拟机安装Centos7详细教程图解 网卡配置参考文章 下载Centos迷你版镜像 安装镜像 下载镜像 阿里云Cen…

理论学习-ARM-内核

ARM内核 函数的调用加载、存储计算中断异常线程的切换 为了提高学习效率&#xff0c;我们要提前想好学习策略。 首先&#xff0c;使用频率越高的知识点&#xff0c;越要首先学习。假使&#xff0c;我们学习了一个知识点&#xff0c;能覆盖工作中80%的工作量&#xff0c;那是不是…

机器学习基础(四)非监督学习的进阶探索

导语&#xff1a;上一节我们详细探索监督学习的进阶应用&#xff0c;详情可见&#xff1a; 机器学习基础&#xff08;三&#xff09;监督学习的进阶探索-CSDN博客文章浏览阅读296次&#xff0c;点赞13次&#xff0c;收藏11次。监督学习作为机器学习的一个主要分支&#xff0c;…

【C++】vector模拟实现+迭代器失效

vector模拟实现 成员变量定义默认成员函数构造函数 迭代器范围for、对象类型匹配原则 容量操作sizeemptycapacityreserve成员变量未更新memcpy值拷贝 resize内置类型的构造函数 数据访问frontbackoperator[ ] 数据修改操作push_backpop_backswapclearinsertpos位置未更新无返回…

【Linux】Linux调试器-gdb使用

1. 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 2. 开始使用 gdb binFile 退出&#xff1a; ctrl d 或 quit 调…

Java 学习和实践笔记(15):面向过程和面象对象其实很简单!

学完这一节&#xff0c;才真正明白了什么叫面向对象和面向过程&#xff0c;其实很简单~ 第一个例子&#xff1a;怎样把大象装进冰箱 这个很清楚很容易地可以列出第一步。 第二个例子&#xff1a;怎样制造一台汽车 这个就很难确定哪一步做第一步。 面向过程和面向对象的区别 …

笔记:torch.roll

最近在准备写 swin transformer 的文章&#xff0c;记录下 torch.roll 的用法&#xff1a; >>> x torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]).view(4, 2) >>> x tensor([[1, 2],[3, 4],[5, 6],[7, 8]]) 第0维度向下移1位&#xff0c;多出的[7,8]补充到顶部 &g…

【移动开发】iOS平台 Java编译器 Jedona Compiler 评测

上期编译器评测链接&#xff1a; Java Compiler IDE评测 一、使用平台 该编译器&#xff08;Jedona Compiler&#xff09;在苹果应用市场App Store中下载&#xff0c;笔者使用iPad进行Java代码编写。 应用市场界面&#xff1a; 二、开发界面介绍 开发界面比较简洁&#xf…

python 与 neo4j 交互(py2neo 使用)

参考自&#xff1a;neo4j的python.py2neo操作入门 官方文档&#xff1a;The Py2neo Handbook — py2neo 2021.1 安装&#xff1a;pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simple 1 节点 / 关系 / 属性 / 路径 节点(Node)和关系(relationship)是构成图的基础…