mongodb-7.0.14分片副本集超详细部署

mongodb介绍:

是最常用的nosql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群。

环境准备

系统系统 BC 21.10
三台服务器:192.168.123.247/248/249
安装包:
mongodb-linux-x86_64-rhel8-7.0.14.tgz (截止2024年10月11日星期五次新版)
mongosh-2.3.1-linux-x64.tgz

服务器规划

服务器247服务器248服务器249
mongosmongosmongos
config serverconfig serverconfig server
shard1主节点 shard1 副节点shard1 仲裁
shard2仲裁 shard2 主节点shard2 副节点
shard3副节点 shard3 仲裁shard3 主节点

端口规划

主机名IP组件mongos组件config server分片shard
server1192.168.123.247端口:27000端口:27017shard1:27001
server2192.168.123.248端口:27000端口:27017shard2:27002
server3192.168.123.249端口:27000端口:27017shard3:27003

时间同步

防火墙

集群部署

解压mongodb

官网下载,根据操作系统选择下载相应的版本。

Mongodb-download

在三台机器上执行解压

tar zxvf mongodb-linux-x86_64-rhel8-7.0.14.tgz  -C  /usr/local/mongodb

新建目录

三台机器建立config、mongos、shard1、shard2、shard3目录,包括子目录

mkdir -p /usr/local/mongodb/config/{conf,data,log,run}
mkdir -p /usr/local/mongodb/mongos/{conf,data,log,run}
mkdir -p /usr/local/mongodb/shard{1,2,3}/{conf,data,log}

目录结构概述

/usr/local/mongodb/config:

用途:存放配置服务器的相关文件。
子目录:

conf:存放配置服务器的配置文件(如 mongod.conf)。
data:存放配置服务器的数据文件。
log:存放配置服务器的日志文件。
run: 存储进程PID文件
/usr/local/mongodb/mongos:

用途:存放路由进程(Mongos)的相关文件。
子目录:

conf:存放路由进程的配置文件。
data:因为 Mongos 不持久化数据。(也可以不创建)
log:存放路由进程的日志文件。
run: 存储进程PID文件
/usr/local/mongodb/shard{1,2,3}

用途:存放分片服务器的相关文件。
子目录:

conf:存放分片服务器的配置文件。
data:存放分片服务器的数据文件。
log:存放分片服务器的日志文件。

配置环境变量

vim /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

使立即生效

source /etc/profile

安装依赖包,缺少就安装

yum install libcurl openssl xz-libs

创建用户,指定组标识符

groupadd mongo -g 777
useradd mongo -g 777 -M -s /sbin/nologin
id mongo

开机启动

cat  >  /etc/systemd/system/mongodb.service  << EOF
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target[Service]
Type=simple
ExecStart=/usr/local/mongodb/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOF

三台config server配置:

cat > /usr/local/mongodb/config/conf/mongod.conf  <<  EOF
# 日志设置
systemLog:destination: file                # 日志写入文件path: /usr/local/mongodb/config/log/mongod.log # 日志文件路径logAppend: true                  # 追加日志logRotate: rename                # 日志轮转方式,支持 rename 或 reopen# 网络设置
net:port: 27017                     # MongoDB 默认端口bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制# 数据目录
storage:dbPath: /usr/local/mongodb/config/data  # 数据文件存放路径wiredTiger:engineConfig:cacheSizeGB: 1               # 根据情况配置内存# 进程设置
processManagement:fork: true                       # 以后台进程方式运行pidFilePath: /usr/local/mongodb/config/run/mongod.pid # PID 文件路径#复制集名称
replication:replSetName: "myconfigset"#作为配置服务
sharding:clusterRole: configsvrEOF

三台mongos配置

cat > /usr/local/mongodb/config/conf/mongod.conf  <<  EOF# 日志设置
systemLog:destination: file                # 日志写入文件path: /usr/local/mongodb/mongos/log/mongos.log # 日志文件路径logAppend: true                  # 追加日志logRotate: rename                # 日志轮转方式,支持 rename 或 reopen# 网络设置
net:port: 27000                    # MongoDB 默认端口bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制# 进程设置
processManagement:fork: true                       # 以后台进程方式运行pidFilePath: /usr/local/mongodb/mongos/run/mongos.pid # PID 文件路径#网络延迟阈值
replication:localPingThresholdMs: 15#关联配置服务
sharding:configDB: myconfigset/server1:27017,server2:27017,server3:27017EOF

启动三台config server (3台)

mongod --config /usr/local/mongodb/config/conf/mongod.conf

安装mongosh

安装好mongosh工具,方便初始化副本集使用,

# mongosh mongodb://server1:27017。成功登录如下图:默认的提示符是’test>’

在这里插入图片描述

大内存页 关闭 hugepage

echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

初始化配置副本集(3台机器执行相同操作)

启动config server后,开始初始化副本集,登录任意一台开始初始化配置副本集

#7.0.14版本登录时在test>数据库下,切换到admin数据库
test> use admin
switched to db admin
admin>#执行以下config变量,注意myconfigset,要和mongod.conf里配置一致。
config={_id:"myconfigset",members:[ 
{_id:0,host:"server1:27017"}, 
{_id:1,host:"server2:27017"}, 
{_id:2,host:"server3:27017",}, 
]}

执行结果如下:
在这里插入图片描述

#再执行初始化
rs.initiate(config)

在这里插入图片描述

rs.status()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.9 配置分片副本集
每台shard1,shard2,shard3配置
Shard1

cat > /usr/local/mongodb/shard1/conf/shard1.conf  << EOF
# 日志设置
systemLog:destination: file                # 日志写入文件path: /usr/local/mongodb/shard1/log/shard1.log # 日志文件路径logAppend: true                  # 追加日志logRotate: rename                # 日志轮转方式,支持 rename 或 reopen# 网络设置
net:port: 27001                     # MongoDB shard1端口bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制# 数据目录
storage:dbPath: /usr/local/mongodb/shard1/data          # 数据文件存放路径wiredTiger:engineConfig:cacheSizeGB: 1                              # 根据情况配置内存# 进程设置
processManagement:fork: true                       # 以后台进程方式运行pidFilePath: /usr/local/mongodb/shard1/data/shard1.pid # PID 文件路径#复制集名称
replication:replSetName: "shard1"#慢查询
operationProfiling:slowOpThresholdMs : 100mode: "slowOp"#作为分片服务
sharding:clusterRole: shardsvrEOF

Shard2

cat > /usr/local/mongodb/shard2/conf/shard2.conf  << EOF# 日志设置
systemLog:destination: file                # 日志写入文件path: /usr/local/mongodb/shard2/log/shard2.log # 日志文件路径logAppend: true                  # 追加日志logRotate: rename                # 日志轮转方式,支持 rename 或 reopen# 网络设置
net:port: 27002                     # shard2端口bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制# 数据目录
storage:dbPath: /usr/local/mongodb/shard2/data          # 数据文件存放路径wiredTiger:engineConfig:cacheSizeGB: 1                              # 根据情况配置内存# 进程设置
processManagement:fork: true                       # 以后台进程方式运行pidFilePath: /usr/local/mongodb/shard2/data/shard2.pid # PID 文件路径#复制集名称
replication:replSetName: "shard2"#慢查询
operationProfiling:slowOpThresholdMs : 100mode: "slowOp"#作为分片服务
sharding:clusterRole: shardsvrEOF

Shard3

cat > /usr/local/mongodb/shard3/conf/shard3.conf  << EOF# 日志设置
systemLog:destination: file                # 日志写入文件path: /usr/local/mongodb/shard3/log/shard3.log # 日志文件路径logAppend: true                  # 追加日志logRotate: rename                # 日志轮转方式,支持 rename 或 reopen# 网络设置
net:port: 27003                     # MongoDB shard3 默认端口bindIp: 0.0.0.0                 # 允许从所有 IP 访问,生产环境建议限制# 数据目录
storage:dbPath: /usr/local/mongodb/shard3/data          # 数据文件存放路径wiredTiger:engineConfig:cacheSizeGB: 1                              # 根据情况配置内存# 进程设置
processManagement:fork: true                       # 以后台进程方式运行pidFilePath: /usr/local/mongodb/shard3/data/shard3.pid # PID 文件路径#复制集名称
replication:replSetName: "shard3"#慢查询
operationProfiling:slowOpThresholdMs : 100mode: "slowOp"#作为分片服务
sharding:clusterRole: shardsvrEOF

启动三台247,248,249服务器的shard1 server

 mongod --config  /usr/local/mongodb/shard1/conf/shard1.conf

在这里插入图片描述

初始化shard1分片副本集

登录任意一台,注意端口号

mongosh mongodb://server1:27001

初始化三台的shard1

#7.0.14版本登录时在test>数据库下,切换到admin数据库
test> use admin
switched to db admin
admin>

config={_id:“shard1”,members:[
{_id:0,host:“server1:27001”},
{_id:1,host:“server2:27001”},
{_id:2,host:“server3:27001”,arbiterOnly: true},
]}
在这里插入图片描述

#再执行初始化
rs.initiate(config)
在这里插入图片描述
rs.status()
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动三台247,248,249服务器的shard2 server

mongod --config  /usr/local/mongodb/shard2/conf/shard2.conf

登录任意一个节点,注意端口号,注意安装了mongosh

mongosh mongodb://server2:27002

初始化三台的shard2

#7.0.14版本登录时在test>数据库下,切换到admin数据库
test> use admin
switched to db admin
admin>config={_id:"shard2",members:[ 
{_id:0,host:"server1:27002",arbiterOnly: true}, 
{_id:1,host:"server2:27002"}, 
{_id:2,host:"server3:27002"}, 
]}#再执行初始化
rs.initiate(config)
rs.status()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.12.1 初始化三台的shard3

#7.0.14版本登录时在test>数据库下,切换到admin数据库
test> use admin;
switched to db admin
admin>config={_id:"shard3",members:[ 
{_id:0,host:"server1:27003"}, 
{_id:1,host:"server2:27003",arbiterOnly: true}, 
{_id:2,host:"server3:27003"}, 
]}#再执行初始化
rs.initiate(config)
rs.status()

在这里插入图片描述

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

启动mongos路由并分片

启动三台247,248,249服务器的mongos

mongos --config  /usr/local/mongodb/mongos/conf/mongos.conf

在这里插入图片描述
登录任意路由节点,注意端口号,注意安装了mongosh

mongosh mongodb://server1:27000

添加分片

#7.0.14版本登录时在test>数据库下,切换到admin数据库
test> use admin
switched to db admin
admin>db.adminCommand({  "setDefaultRWConcern" : 1,  "defaultWriteConcern" : {    "w" : 1  }}) 
admin>##添加分片
sh.addShard("shard1/server1:27001,server2:27001,server3:27001")
sh.addShard("shard2/server1:27002,server2:27002,server3:27002")
sh.addShard("shard3/server1:27003,server2:27003,server3:27003")
#
Admin> sh.status();

在这里插入图片描述

验证分片机制

指定分片生效:

db.runCommand({enablesharding:"testdb"})

哈希分片

db.runCommand({shardcollection:"testdb.table1",key:{id:"hashed"}})

插入1万个数据,测试

for (var i = 1; i <= 10000; i++){
db.table1.insertOne({id:i,"test1":"testval1"});

在这里插入图片描述
Shard1
在这里插入图片描述
Shard2
在这里插入图片描述
Shard3
在这里插入图片描述
汇总内容
在这里插入图片描述
验证已完成,可以看到数据分到3个分片,各自分片数量为:
shard1 “count” : 3366,
shard2 “count” : 3284,
shard3 “count” : 3350。
已经成功!

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

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

相关文章

AI LLM 利器 Ollama 架构和对话处理流程解析

Ollama 概述 Ollama 是一个快速运行 LLM&#xff08;Large Language Models&#xff0c;大语言模型&#xff09;的简便工具。通过 Ollama&#xff0c;用户无需复杂的环境配置&#xff0c;即可轻松与大语言模型对话互动。 本文将解析 Ollama 的整体架构&#xff0c;并详细讲解…

FFmpeg的简单使用【Windows】

目录 一、视频生成图片 静态图片 转码过程 动态图片gif 二、图片生成视频 三、FFmpeg常用参数命令 3.1 主要参数 3.1.1、-i 3.1.2、-f 3.1.3、-ss 3.1.4、-t 3.2 音频参数 3.2.1、-aframes 3.2.2、 -b:a 3.2.3、-ar 3.2.4、-ac 3.2.5、-acodec 3.2.6、-an 3…

desmos和webgl绘制线条

目录 desmos绘制 webgl绘制 将线段坐标生成三角化坐标 处理斜接线段 处理圆角 尖角 先在desmos上面完成线条lineJoin绘制的,再将代码和公式转到js用webgl绘制. desmos绘制 示例 desmos计角斜接角时&#xff0c;需要用到的一些函数。在desmos定义成公共函数&#xff0c…

【全网最全】AI产品经理面试高频100题答案解析

详细的目录如下&#xff0c;需要的小伙伴可以详细看一下~ 第一章&#xff1a;机器学习和深度学习的关系 第二章&#xff1a;机器学习7大经典算法 算法一&#xff1a;K近邻算法【分类算法】 1.1 KNN 算法的实现原理 1.2 KNN应用场景举例&#xff1a;预测候选人能不能拿到 O…

心觉:激活潜意识财富密码:每天一练,财富自动来

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作200/1000天 为什么有些人总是轻而易举地吸引到财富 而你却努力多年仍然徘徊在财务的困境中&#xff1f; 你每天都在辛苦工作&…

LabVIEW离心泵监测系统

LabVIEW的离心泵监测系统在监测离心泵的运行状态&#xff0c;通过实时数据采集和故障预警&#xff0c;提高泵的运行效率和安全性。系统集成了多种传感器&#xff0c;利用Modbus RTU协议和RS485串口总线进行数据通信&#xff0c;通过LabVIEW软件平台实现数据处理和用户界面交互。…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中&#xff0c;我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如&#xff0c;我们介绍了以下案例&#xff1a; Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

Opencv:FisherFace算法实现人脸检测

目录 简介 实现步骤 1. 图像读取和预处理 2. 创建和训练识别器 3. 图像识别和结果展示 4、结果展示 总结 简介 在人工智能和计算机视觉领域&#xff0c;人脸识别是一项非常有趣且实用的技术。本文将向您介绍如何使用OpenCV库以及FisherFace算法实现人脸识别。我们将一步…

数据可视化-使用python制作词云图(附代码)

想象一下&#xff0c;当你写完一篇日记或者一篇文章后&#xff0c;想要知道里面哪些词语出现得最多。这时候&#xff0c;词云图就能派上用场了。它会统计出文章里每个词语出现的次数&#xff0c;然后把这些词语以不同大小的字体展示出来&#xff0c;出现次数越多的词语&#xf…

【MATLAB代码】基于RSSI原理的蓝牙定位程序(N个锚点、三维空间),源代码可直接复制

文章目录 介绍主要功能技术细节适用场景程序结构运行截图源代码详细教程:基于RSSI的蓝牙定位程序1. 准备工作2. 代码结构2.1 清理工作环境2.2 定义参数2.3 生成锚点坐标2.4 定义信号强度与距离的关系2.5 模拟未知点的位置2.6 定位函数2.7 绘图2.8 输出结果2.9 定义定位函数3. …

SSL---SSL certificate problem

0 Preface/Foreword 0.1 SSL certificate problem 开发过程中&#xff0c;gitlab-runner连接gitlab时候出现SSL 证书问题。 场景&#xff1a;公司的gitlab runner服务器引入了SSL证书&#xff0c;每年都会主动更新一次。当前的gitlab-runner运行在PC机器上&#xff0c;但是g…

某乎接口zse96解析(附带可直接运行js)

某乎接口zse96解析 下面是作者呕心沥血,观看各路大神和某乎js拼接在一起的js,附带浏览器环境,可以直接运行示例接口多请求几次发现,出来zse96在变化之外,其余的基本不变,那么源码中直接搜索x-zse-96,得出下面2个函数 var tE = eo(te, tp.body, {xUDId: tv,zse93: tT,xApp…

IO编程--拷贝文件、文件总行数输出、时间打印

一、使用fread和fwrite完成两个文件的拷贝&#xff0c;要求源文件和目标文件由外界输入 代码如下: #include <myhead.h> int main(int argc, const char *argv[]) {//判断是否输入两个文件名if(argc!3){fprintf(stderr,"文件个数错误");return -1;}//以读形式打…

【去哪儿-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

Linux系统——lvm逻辑卷

Linux系统——lvm逻辑卷 一、lvm逻辑卷1、lvm操作流程2、操作指令 二、逻辑卷操作1、创建逻辑卷1.1 /dev/cloud/openstack 5G xfs /cloud/openstack1.2 /dev/cloud/docker 10G ext4 /cloud/docker 2、逻辑卷扩容2.1 扩容流程2.2 需求一&#xff1a;扩容ext4文件系统的逻辑卷2.3…

4款高效电脑录屏软件推荐:高清、不卡顿、无水印

在当今这个数字化时代&#xff0c;屏幕录制技术已经成为教育工作者、游戏玩家以及各类数字内容创作者不可或缺的工具。一款高效、稳定的录屏软件不仅能够帮你轻松捕捉屏幕上的精彩瞬间&#xff0c;还能提升你的内容创作效率。今天&#xff0c;我们就为大家推荐5款高清、不卡顿、…

斯坦福大学提出电影剧本可视化工具ScriptViz:能够根据剧本中的文本和对话自动检索相关的电影画面,帮助剧作家更好地构思和调整剧情

title:斯坦福大学提出电影剧本可视化工具ScriptViz&#xff1a;能够根据剧本中的文本和对话自动检索相关的电影画面&#xff0c;帮助剧作家更好地构思和调整剧情 斯坦福大学的研究者们开发了一个电影剧本可视化工具ScriptViz工具&#xff0c;ScriptViz的工作原理可以简单地理解…

oceanbase的日志量太大,撑爆磁盘,修改下日志级别

oceanbase的日志量太大&#xff0c;撑爆磁盘&#xff0c;修改下日志级别&#xff1a; [adminlnpg ~]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123 Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221561020 Server version: O…

echarts显示隐藏柱状图柱子的背景色

showBackground: true, //控制是否显示背景色backgroundStyle: {// color: rgba(180, 180, 180, 0.4) //背景色的颜色color: red} 关键代码是 showBackground: true, //控制是否显示背景色 设置为false或者直接而不写就是不显示背景色&#xff0c;默认是不显示背景色 true的时…

IO作业代码

问题 通过 fwrite和 fread去拷贝 文件到另外一个文件上 #include<myhead.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include<errno.h> #include<time.h> int main(int argc, const char *argv[]) { FILE *fp fo…