mongodb 分片集群部署

news2024/11/25 15:26:59

文章目录

  • mongodb 分片部署
    • 二进制安装
    • 三台config 配置
    • shard 分片安装
      • shard1 安装
      • shard2 安装
      • shard3 安装
      • mongos 安装
      • 数据库、集合启用分片
      • 创建集群认证文件
      • 创建集群用户
      • 部署常见问题

mongodb 分片部署

二进制安装

mkdir -p /data/mongodb
tar xvf mongodb-linux-x86_64-rhel70-3.6.17.tgz
mv mongodb-linux-x86_64-rhel70-3.6.17/* /data/mongodb
#设置环境变量
echo export PATH='$'PATH:/data/mongodb/bin >> .bash_profile
source .bash_profile

三台config 配置

#三台配置一致
mkdir -p /data/mongodb/config
mkdir -p /data/mongodb/config/logs/
mkdir -p /data/mongodb/config/pid/
mkdir -p /etc/mongodb/

cat > //etc/mongodb/config.conf <<EOF
dbpath=/data/mongodb/config
logpath=/data/mongodb/config/logs/config.log
pidfilepath=/data/mongodb/config/pid/config.pid
logappend=true
bind_ip=0.0.0.0
port=27100
fork=true
configsvr=true
replSet=configs
EOF

#三台启动config
mongod -f /etc/mongodb/config.conf

config 初始化,任意一台执行

mongo --port 27100
use admin
config = {
        _id : "configs",
         members : [
             {_id : 0, host : "192.168.221.173:27100" },
             {_id : 1, host : "192.168.221.174:27100" },
             {_id : 2, host : "192.168.221.175:27100" }
         ]
}
rs.initiate(config)

shard 分片安装

shard1 安装

3台服务器添加配置
configdb为config服务地址,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址,/data根据实际情况修改为数据盘路径。

3台服务器分别添加配置文件

#三台配置一致
mkdir -p /data/mongodb/shard1/data
mkdir -p /data/mongodb/shard1/logs/ 
mkdir -p /data/mongodb/shard1/pid/ 

cat > /etc/mongodb/shard1.conf <<EOF
dbpath=/data/mongodb/shard1/data
logpath=/data/mongodb/shard1/logs/shard1.log
pidfilepath=/data/mongodb/shard1/pid/shard1.pid
directoryperdb=true
logappend=true
replSet=shard1
bind_ip=0.0.0.0
port=27001
fork=true
shardsvr=true
EOF
#3台服务器分别启动服务
mongod -f /etc/mongodb/shard1.conf

shard1 初始化

连接任意一台非“arbiterOnly: true”节点shard1,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址(建议节点1执行)

mongo --port 27001
use admin
config = {
      _id : "shard1",
       members : [
           {_id : 0, host : "192.168.221.173:27001" },
           {_id : 1, host : "192.168.221.174:27001" },
           {_id : 2, host : "192.168.221.175:27001", arbiterOnly: true  }
       ]
  }
rs.initiate(config);

shard2 安装

3台服务器分别添加配置文件

mkdir -p /data/mongodb/shard2/data
mkdir -p /data/mongodb/shard2/logs/
mkdir -p /data/mongodb/shard2/pid/
cat > /etc/mongodb/shard2.conf <<EOF
dbpath=/data/mongodb/shard2/data
logpath=/data/mongodb/shard2/logs/shard2.log
pidfilepath=/data/mongodb/shard2/pid/shard2.pid
directoryperdb=true
logappend=true
replSet=shard2
bind_ip=0.0.0.0
port=27002
fork=true
shardsvr=true
EOF
#3台服务器分别启动服务
mongod -f /etc/mongodb/shard2.conf

shard2初始化,

连接任意一台非“arbiterOnly: true”节点shard2,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址(建议节点1执行)

mongo --port 27002
use admin
config = {
      _id : "shard2",
       members : [
           {_id : 0, host : "192.168.221.173:27002" },
           {_id : 1, host : "192.168.221.174:27002", arbiterOnly: true  },
           {_id : 2, host : "192.168.221.175:27002" }
       ]
  }
rs.initiate(config);

shard3 安装

3台服务器分别添加配置文件

mkdir -p /data/mongodb/shard3/data/
mkdir -p /data/mongodb/shard3/logs/
mkdir -p /data/mongodb/shard3/pid/

cat > /etc/mongodb/shard3.conf <<EOF
dbpath=/data/mongodb/shard3/data
logpath=/data/mongodb/shard3/logs/shard3.log
pidfilepath=/data/mongodb/shard3/pid/shard3.pid
directoryperdb=true
logappend=true
replSet=shard3
bind_ip=0.0.0.0
port=27003
fork=true
shardsvr=true
EOF
#3台服务器分别启动服务
mongod -f /etc/mongodb/shard3.conf

shard3 初始化,

连接任意一台非“arbiterOnly: true”节点shard3,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址(建议节点1执行)

mongo --port 27003
use admin
config = {
      _id : "shard3",
       members : [
           {_id : 0, host : "192.168.221.173:27003" },
           {_id : 1, host : "192.168.221.174:27003" },
           {_id : 2, host : "192.168.221.175:27003", arbiterOnly: true   }
       ]
  }
rs.initiate(config);

mongos 安装

3台服务器分别添加配置文件

mkdir -p /data/mongodb/mongos/pid/
mkdir -p /data/mongodb/mongos/logs/

cat > /etc/mongodb/mongos.conf <<EOF
#configdb为config服务地址
configdb=configs/192.168.221.173:27100,192.168.221.174:27100,192.168.221.175:27100
pidfilepath=/data/mongodb/mongos/pid/mongos.pid
logpath=/data/mongodb/mongos/logs/mongos.log
bind_ip=0.0.0.0
port=30000
logappend=true
fork=true
EOF

#3台服务器启动mongos
mongos -f /etc/mongodb/mongos.conf

配置分片

任意一台服务器连接,192.168.221.173、192.168.221.174、192.168.221.175分别替换为3台机器的IP地址

mongo --port 30000
use admin
#添加shard
sh.addShard("shard1/192.168.221.173:27001,192.168.221.174:27001,192.168.221.175:27001")
sh.addShard("shard2/192.168.221.173:27002,192.168.221.174:27002,192.168.221.175:27002")
sh.addShard("shard3/192.168.221.173:27003,192.168.221.174:27003,192.168.221.175:27003")
#查看分片状态:
sh.status()

在这里插入图片描述

这是一个MongoDB的分片状态信息。让我来解释一下每个部分的含义:

1. sharding version:这是分片的版本信息。当前的版本是6,最小兼容版本是5。
2. shards:这里列出了所有的分片信息。每个分片有一个唯一的"_id",以及它的"host"(主机)和"state"(状态)。这些信息指示了每个分片所在的主机和它们的状态。
3. active mongoses:这里显示了当前活动的mongos进程的数量和版本号。mongos是MongoDB的路由进程,用于处理客户端请求并将它们路由到正确的分片。
4. autosplit:这个字段指示是否启用了自动分片功能。在这个例子中,自动分片是启用的。
5. balancer:这个字段显示了均衡器(balancer)的状态。它指示均衡器是否启用,以及它是否正在运行。还显示了最近5次均衡尝试中失败的次数。
6. databases:这里列出了所有的数据库信息。每个数据库有一个"_id"和它的"primary"(主节点),还指示了该数据库是否进行了分片。

数据库、集合启用分片

mongo --port 30000
use admin
#这条命令表示启用分片功能,针对的数据库为 "rabbitpre_app"。
db.runCommand({enablesharding:"rabbitpre_app"});

#这条命令表示对 "rabbitpre_app" 数据库中的 "t_page_component" 集合进行分片,使用 "appId" 作为散列键(hashed),实际数据分布会根据 appId 的散列值进行分片。
db.runCommand( {shardcollection : "rabbitpre_app.t_page_component",key : { "appId" : "hashed" }} )
#
use rabbitpre_app
#这条命令表示获取 "rabbitpre_app" 数据库中 "t_page_component" 集合的统计信息,例如集合的大小、索引大小、数据条数等。
db.t_page_component.stats();

创建集群认证文件

创建集群认证文件(三台执行)

openssl rand -base64 512 > keyfile.file
#将keyfile.file拷贝到3台服务的/etc/mongodb目录,并设置权限
chmod 600 /etc/mongodb/keyfile.file

在shard、config添加如下配置(三台):

$ cat >> /etc/mongodb/shard1.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

$ cat >> /etc/mongodb/shard2.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

$ cat >> /etc/mongodb/shard3.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

$ cat >> /etc/mongodb/config.conf <<EOF
auth=true
keyFile=/etc/mongodb/keyfile.file
EOF

在mongos添加如下配置(三台)

echo "keyFile=/etc/mongodb/keyfile.file" >> /etc/mongodb/mongos.conf

创建集群用户

#创建用户,更新用户,密码设置为符合安全要求的密码
>db.createUser({ user: 'admin', pwd:'密码', roles:[{role:"root",db:"admin"}]})
>db.createUser({user:'rwuser',pwd:'密码', roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
> db.updateUser('rwuser',{pwd:'密码',roles:[{role:'readWrite',db:'admin'}]})
#Roles角色说明:
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

部署常见问题

Error initializing sharding state, sleeping for 2 seconds and trying again :: caused by :: NetworkInterfaceExceededTimeLimit: Error loading clusterID :: caused by :: Operation timed out

查看防火墙是否关闭
关闭防火墙,问题解决

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

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

相关文章

mac软件安装后打开软件显示损坏

#mac传输安装包后安装后打开软件显示损坏处理方式 以postman为例&#xff0c;输入前面的代码&#xff0c;打开访达&#xff0c;把有问题的软件拉到命令行窗口&#xff0c;确认即可 sudo xattr -r -d com.apple.quarantine /Applications/Postman.app

基于飞腾芯片的设计与调试入门指导

一、啥是自主可控 国产CPU现在厂家细算起来其实有很多,现在华为、小米也在做自己的CPU,瑞芯微、全志等的SoC现在也是广泛应用。但是真正能叫做自主可控的CPU厂商,只有6家。那啥是自主可控?首先来不严谨的讲下现在数字芯片是怎么做的设计。FPGA大家都知道,可以通过Verilog…

XP Power电源模块替代 HVF124000D-10W HVF15A6000D-10W 直流升压高压单路双路输出升压模块

F Features 最低工作电压&#xff1a;0.7V电压隔离&#xff1a;1000VDC /3000VDC 平均无故障时间&#xff1a; > 800,000 小时短路与电弧保护无最低负载要求&#xff1a;可空载工作输入电压&#xff1a;5、12、15、24VDCOutput 100,200、300、400、500 、600、800、 1000…

问道管理 :现金流若充裕 回购应是常态

许多闻名企业家将是否具有富余的现金流&#xff0c;置于企业运营风险的首位。看上去巨大的公司由于现金流开裂而轰然坍毁&#xff0c;已层出不穷。而富余的现金流是用于运营回购、股票分红还是理财出资&#xff0c;表现着公司对行业前景和估值水平的判别。 现金流富余的公司&am…

无套路,财务数据分析-多组织损益表分析分享

在报表众多的财务数据分析中&#xff0c;损益表是老板们最关注的报表&#xff0c;特别是当有多组织时&#xff0c;损益表的分析就变得更加重要了。以前受限于数据分析工具&#xff0c;做损益表分析时很难做到多维度灵活分析&#xff0c;但随着BI数据可视化工具的发展&#xff0…

【力扣 第 360 场周赛】题解(一题待补)

目录 2833. 距离原点最远的点2834. 找出美丽数组的最小和2835. 使子序列的和等于目标的最少操作次数TODO 2836. 在传球游戏中最大化函数值 这场比赛排名第 1 - 1000 名的参赛者 可获「NIO 蔚来」简历内推机会&#xff0c;比有的场次前十才给容易多了。 2833. 距离原点最远的点…

python下又一款漂亮超炫酷的动态数据可视化工具——可动态交互

python下有很多漂亮的数据可视化库&#xff0c;例如 Matplotlib、Seaborn、Bokeh、Plotly、Pyecharts等等&#xff0c;我们直接使用这些第三方库来进行漂亮的数据可视化操作。虽然这些库都可以很好的展示数据&#xff0c;但是在实现动态可交互上&#xff0c;很多库并不支持动态…

ssm公司信息管理系统源码和论文

ssm公司信息管理系统源码和论文071 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳…

LInux之chrony服务器

目录 场景 重要性 LInux的两个时钟 硬件时钟 系统时钟 NTP协议 Chrony介绍 定义 组成 --- chronyd和chronyc 安装与配置 安装 Chrony配置文件分析 同步时间服务器 chronyc命令 chronyc sources输出分析 其它命令 查看时间服务器的状态 查看时间服务器是否在线 …

OpenCV为老照片,黑白照片增加色彩

Colorful Image Colorization 图片的颜色上色&#xff0c;主要使用到了CNN卷积神经网络&#xff0c;作者在ImageNet数据集上进行了大量的训练&#xff0c;并将此问题使用在分类任务中&#xff0c;以解决问题的潜在的不确定性&#xff0c;并在训练时使用颜色重新平衡的损失函数方…

气传导耳机哪个品牌好?推荐几款非常不错的气传导耳机

​气传导耳机能够提供高品质的音效&#xff0c;同时保持耳道的开放&#xff0c;让你在享受音乐的同时保持对外界的感知&#xff0c;户外使用安全性更高。还有很多人对气传导耳机不了解的&#xff0c;以下是我们为大家推荐的四款气传导耳机&#xff0c;仅供大家参考。 NO1&…

【2023最新版】R安装(直接+Anaconda)及使用(Pycharm配置R)教程

目录 一、R语言 1. R官网 2. R介绍 二、直接安装R 1. 下载 2. 安装 三、Pycharm使用R 1. 安装Pycharm 2. R Language for IntelliJ插件 3. R设置 报错 4. R软件包 安装 加载 查看已安装的包 四、使用Anaconda创建R语言虚拟环境 1. 安装Anaconda 2. 创建R语言…

9 款值得您花钱的最佳 PDF 编辑器

PDF 格式在 90 年代初一推出就开始流行。PDF 文件便于携带、易于共享、阅读有趣&#xff0c;但难以编辑。有什么不喜欢的呢&#xff1f;与其他格式相比&#xff0c;无论大小的企业都更喜欢 PDF&#xff0c;因为他们不喜欢其他人篡改他们的文档。 无论是指南、职业道德还是展示…

2023年05月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;怪盗基德的滑翔翼 怪盗基德是一个充满传奇色彩的怪盗&#xff0c;专门以珠宝为目标的超级盗窃犯。而他最为突出的地方&#xff0c;就是他每次都能逃脱中村警部的重重围堵&#xff0c;而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。 有一天&#xff…

element——switch接口成功后赋值打开开关

应用场景 基本用法使用v-model双向绑定值&#xff0c;进行开关控制 例子1:需求&#xff1a; **点击switch&#xff0c;出弹窗&#xff0c;点击弹窗保存按钮调接口成功后再赋值&#xff08;row.orderButtonValue“1”&#xff09;打开switch开的状态变颜色。 在vue 中使用 :va…

【openEuler创新项目探索】一个Java端的向量化BLAS库VectorBLAS

VectorBLAS简介 VectorBLAS是一个使用Java语言实现的向量化BLAS高性能库&#xff0c;目前已在openEuler社区开源。 VectorBLAS通过循环展开、矩阵分块和内存布局优化等算法优化&#xff0c;对BLAS函数进行了深度优化&#xff0c;并利用VectorAPI JDK提供的多种向量化API实现。…

快速学习ES6新特性Promise之实例代码

&#xff08;一&#xff09;首先用setTimeout模拟一个异步请求&#xff0c;然后封装成一个new Promise <script type"text/javascript">function createAudioFileAsync() {console.log(调用返回数据前);let newPromise new Promise((resolve, reject) > {…

电子邮件营销模板怎么写?如何做营销邮件?怎么设计EDM邮件模板?

推荐的电子邮件营销模板有哪些&#xff1f; 电子邮件营销模板是现代营销策略中的重要组成部分。通过精心设计的邮件模板&#xff0c;您可以有效地吸引客户&#xff0c;传达信息&#xff0c;并提高销售率。在本文中&#xff0c;我们将介绍如何撰写出色的电子邮件营销模板&#x…

猫头虎博主赠书一期:《Kubernetes原生微服务开发》

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

C语言(第三十三天)

3.1.2 画图推演 3.2 举例2&#xff1a;顺序打印一个整数的每一位 输入一个整数m&#xff0c;打印这个按照顺序打印整数的每一位。 比如&#xff1a; 输入&#xff1a;1234 输出&#xff1a;1 2 3 4 输入&#xff1a;520 输出&#xff1a;5 2 0 3.2.1 分析和代码实现 这个题目&a…