mongodb部署Shard Cluster

一、创建集群认证文件

bash 复制代码
mkdir  ./data  ./conf

openssl rand -base64 756 > ./conf/keyfile

chmod   400  ./conf/keyfile

docker network create mongo-cluster

二、部署configsever副本集

bash 复制代码
#!/bin/bash
iname=mongodb:8.0.9
conf_name=mongo_conf_
replset_name=confrs

echo "----------------- create configserver  start -------------------------"

for i in 1 2
do
   docker run -d --name ${conf_name}${i}   \
       --network mongo-cluster \
       -v ./data/conf-rs$i:/datadb \
       -v ./conf/keyfile:/data/configdb/keyfile \
       -p 270${i}9:27019 $iname  \
       mongod --configsvr --replSet $replset_name --port 27019  --keyFile /data/configdb/keyfile --bind_ip_all
done

docker exec -it mongo_conf_1 mongosh --port 27019 --eval "rs.initiate({
  _id: 'confrs',
  configsvr: true,
  members: [
    {_id: 0, host: 'mongo_conf_1:27019'},
    {_id: 1, host: 'mongo_conf_2:27019'}
  ]
})"

三、部署shard副本集

bash 复制代码
#!/bin/bash
iname=mongodb:8.0.9
shard_name=mongo_shard_
replset_name=shardrs

echo "----------------- create shard replSet  start -------------------------"
#部署分片
for i in 1 2
do
   docker run -d --name ${shard_name}${i}   \
       --network mongo-cluster \
       -v ./data/shard-rs$i:/data/db \
       -v ./conf/keyfile:/data/configdb/keyfile \
       -p 270${i}8:27018 $iname  \
       mongod --shardsvr --replSet $replset_name$i --port 27018  --keyFile /data/configdb/keyfile  --bind_ip_all
done

docker exec -it mongo_shard_1 mongosh --port 27018 --eval "rs.initiate({
  _id: 'shardrs1',
  members: [
    {_id: 0, host: 'mongo_shard_1:27018'}
  ]
})"

docker exec -it mongo_shard_2 mongosh --port 27018 --eval "rs.initiate({
  _id: 'shardrs2',
  members: [
    {_id: 0, host: 'mongo_shard_2:27018'}
  ]
})"

4、部署路由mongos

bash 复制代码
#!/bin/bash
iname=mongodb:8.0.9
conf_name=mongo_conf_
mongos_name=mongo_mongos

echo "----------------- create mongos  start -------------------------"

docker run \
       -d --name $mongos_name  \
       --network mongo-cluster \
       -v ./data/mongos-rs:/data/db \
       -v ./conf/keyfile:/data/configdb/keyfile \
       -p 27017:27017 \
       $iname  mongos --configdb confrs/${conf_name}1:27019,${conf_name}2:27019   --keyFile /data/configdb/keyfile  --bind_ip_all

添加分片

bash 复制代码
docker exec -it mongo_mongos mongosh --port 27017
sh.addShard("shardrs1/mongo_shard_1:27018")
sh.addShard("shardrs2/mongo_shard_2:27018")

#查看副本rs.status()

#查看分片
sh.status()

五、创建用户

bash 复制代码
use admin
db.createUser({
  user: "admin",
  pwd: "123456",
  roles: [ { role: "root", db: "admin" } ]
})
bash 复制代码
 mongosh  --port  27017  -u admin  -p 123456

# 启用分片数据库
sh.enableSharding("langchain_test_db")

# 对集合分片(按字段哈希)
sh.shardCollection("langchain_test_db.langchain_test_collection", { "shardKey": "hashed" })
相关推荐
热爱生活的猴子4 分钟前
Poetry 在 Linux 和 Windows 系统中的安装步骤
linux·运维·windows
m0_6948455730 分钟前
服务器需要备案吗?在哪些地区需要备案?
linux·运维·服务器·云计算
myloveasuka38 分钟前
[Linux]内核态与用户态详解
linux
@BreCaspian42 分钟前
在HP暗影精灵Ubuntu20.04上修复IntelAX211Wi-Fi不可用的全过程记录——系统安装以后没有WIFI图标&无法使用无线网
linux
小眼睛FPGA1 小时前
【RK3568+PG2L50H开发板实验例程】Linux部分/FPGA dma_memcpy_demo 读写案例
linux·运维·科技·ai·fpga开发·gpu算力
weixin_437398211 小时前
转Go学习笔记
linux·服务器·开发语言·后端·架构·golang
津津有味道1 小时前
Qt C++串口SerialPort通讯发送指令读写NFC M1卡
linux·c++·qt·串口通信·serial·m1·nfc
JeffersonZU2 小时前
Linux/Unix文件IO(文件描述符、原子操作、文件数据结构、open、read、write、fcntl、dup)
linux·c语言·unix·gnu
szekl2 小时前
HDMI 2.0 4×2矩阵切换器412HN——多信号输入输出的高清解决方案
linux·矩阵·计算机外设·电脑·ekl
weixin_399380693 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes