mongodb 分片集群部署

文章目录

  • 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.rhkb.cn/news/113401.html

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

相关文章

数据通信——传输层TCP(可靠传输原理的ARQ)

引言 上一篇讲述了停止等待协议的工作流程&#xff0c;在最后提到了ARQ自动请求重传机制。接下来&#xff0c;我们就接着上一篇的篇幅&#xff0c;讲一下ARQ这个机制 还是这个图来镇楼 ARQ是什么&#xff1f; 发送端对出错的数据帧进行重传是自动进行的&#xff0c;因而这种…

C语言每日一练----Day(13)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;数字颠倒 单词倒排 &#x1f493;博主csdn个人主页&#xff1a;小小uni…

k8s 查看加入主节点命令 k8s重新查看加入节点命令 k8s输入删除,重新查看加入命令 kuberadm查看加入节点命令

1. 使用kuberadm 安装成功后&#xff0c;clear清除了屏幕数据&#xff0c;加入命令无法查看&#xff0c;使用如下&#xff0c;重新查看node如何加入主节点命令&#xff1a; kubeadm token create --print-join-command --ttl 0 2.画圈的全部是&#xff0c;都复制&#xff0c;在…

css中文本阴影特效

文字颜色渐变 .text-clip{color:transparent;font-size: 40px;font-weight: bold;background: linear-gradient(45deg, rgba(0,173,181,1) 0%, rgba(0,173,181,.4) 100%);-webkit-background-clip: text; } 文字模糊 .text-blurry{text-align: center;color: transparent;text-…

Android修改默认gradle路径

Android Studio每次新建项目&#xff0c;都会默认在C盘生成并下载gradle相关文件&#xff0c;由于C盘空间有限&#xff0c;没多久C盘就飘红了&#xff0c;于是就需要把gradle相关文件转移到其他盘 1、到C盘找到gradle文件 具体路径一般是&#xff1a;C:\Users\用户\ .gradle …

[第七届蓝帽杯全国大学生网络安全技能大赛 蓝帽杯 2023]——Web方向部分题 详细Writeup

Web LovePHP 你真的熟悉PHP吗&#xff1f; 源码如下 <?php class Saferman{public $check True;public function __destruct(){if($this->check True){file($_GET[secret]);}}public function __wakeup(){$this->checkFalse;} } if(isset($_GET[my_secret.flag]…

VR司法法治教育平台,沉浸式课堂教学培养刑侦思维和能力

VR司法法治教育平台提供了多种沉浸式体验&#xff0c;通过虚拟现实(Virtual Reality&#xff0c;简称VR)技术让用户深度参与和体验法治知识。以下是一些常见的沉浸式体验&#xff1a; 1.罪案重现 VR司法法治教育平台可以通过重现真实案例的方式&#xff0c;让用户亲眼目睹罪案发…

RabbitMq深度学习

什么是RabbitMq? RabbitMQ是一个开源的消息队列中间件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。它被广泛用于分布式系统中的消息传递和异步通信。RabbitMQ提供了一种可靠的、可扩展的机制来传递消息&#xff0c;使不同的应用程序能够相互之间进行…

AR界安卓在中国,Rokid引爆空间计算狂潮

击关注 文丨刘雨琦 你可能很难想象&#xff0c;在一个没有显示屏也没有鼠标的空间&#xff0c;仅凭一副AR眼镜和一台口袋主机&#xff0c;就能完成一篇5000字的文章。 没错&#xff0c;8月26日&#xff0c;在2023 Rokid Jungle 新品发布会现场&#xff0c;这样的场景正在真实…

【C++进阶(二)】STL大法--vector的深度剖析以及模拟实现

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; vector 1. 前言2. 熟悉vector的接口函数2.1 vec…

R语言响应面(RSM)、线性模型lm分析生产过程影响因素可视化

全文链接&#xff1a;https://tecdat.cn/?p33499 响应面&#xff08;Response Surface Methodology&#xff0c;RSM&#xff09;分析是一种常用的统计方法&#xff0c;用于研究和优化生产过程中的影响因素。通过建立数学模型来描述因素与响应之间的关系&#xff0c;RSM可以帮助…

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part III

用Cmake build OpenCV后&#xff0c;在VS中查看OpenCV源码的方法(环境VS2022openCV4.8.0) Part III 用Cmake build OpenCV后&#xff0c;在VS中查看OpenCV源码的方法&#xff08;环境VS2022openCV4.8.0&#xff09; Part I_松下J27的博客-CSDN博客 用Cmake build OpenCV后&…

③matlab向量和矩阵

目录 手动输入数组 创建等间距向量 数组创建函数 手动输入数组 1.背景 单个称为标量的数值实际上是一个 11 数组&#xff0c;也即它包含 1 行 1 列。 任务 创建一个名为 x 并且值为 4 的变量。 2.您可以使用方括号创建包含多个元素的数组。 x [3 5] x 3 5 任务 …

Python钢筋混凝土结构计算.pdf-混凝土构件计算

计算原理&#xff1a; 代码实现&#xff1a; #钢筋混凝土参数 def c_hrb(): global fcuk,HRB,Ec,fc,ft,ftk,Es,fy,fyp,fyk global a1,epsilon_cu fcukEcfcftftk0.0 HRBEsfyfypfyk0.0 #矩形应力图系数a1&#xff0c;C50以下为1.0 a11.0 #正截面混凝土极限压应变epsilon_cu&#…

uni-app+uView实现点击查看大图片的效果

<u-button text"月落" click"imgPreview()"></u-button> //注意&#xff1a;参数urls 是预览图片的链接地址&#xff0c;是个数组 imgPreview() {uni.previewImage({indicator: "none",loop: false,urls: []&#xff0c;}) },参数说…

纵行科技与山鹰绿能达成合作,提供物联网资产管理数据服务

近日&#xff0c;纵行科技与山鹰绿能宣布双方达成深度合作关系&#xff0c;纵行科技将为山鹰绿能提供专业的物联网技术服务&#xff0c;使用物联网技术帮助山鹰绿能对循环包装载具等资产进行在线管理和数字化运营。 据悉&#xff0c;山鹰绿能是一家由山鹰国际控股的全资子公司…

Kafka3.0.0版本——Follower故障处理细节原理

目录 一、服务器信息二、服务器基本信息及相关概念2.1、服务器基本信息2.2、LEO的概念2.3、HW的概念 三、Follower故障处理细节 一、服务器信息 三台服务器 原始服务器名称原始服务器ip节点centos7虚拟机1192.168.136.27broker0centos7虚拟机2192.168.136.28broker1centos7虚拟…

中国智慧燃气行业市场需求

文章来源&#xff1a;中研普华产业研究院 关键词&#xff1a;智慧燃气、智慧燃气场站、智慧燃气平台、设备设施数字化、数字孪生、工业互联网 智慧燃气&#xff0c;是以城市输气管网为基础&#xff0c;各终端用户协调发展&#xff0c;以信息通信平台为支撑&#xff0c;具有信…

JWT 技术的使用

应用场景&#xff1a;访问某些页面&#xff0c;需要用户进行登录&#xff0c;那我们如何知道用户有没有登录呢&#xff0c;这时我们就可以使用jwt技术。用户输入的账号和密码正确的情况下&#xff0c;后端根据用户的唯一id生成一个独一无二的token&#xff0c;并返回给前端&…

Ansible自动化运维工具(二)

目录 &#xff08;6&#xff09;copy模块 &#xff08;7&#xff09;file模块 ​编辑​编辑&#xff08;8&#xff09;hostname模块 &#xff08;9&#xff09;ping模块 &#xff08;10&#xff09;yum 模块 &#xff08;11&#xff09;service/system模块 ​编辑 ​…