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" })
相关推荐
熊猫在哪24 分钟前
野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(一)conda环境搭建
linux·人工智能·python·嵌入式硬件·神经网络·机器学习·边缘计算
斯普润布特25 分钟前
Centos系统资源镜像配置
linux·运维·centos
雨笋情缘26 分钟前
【2025-05-22】XXL-JOB 的 8810 端口添加到 CentOS 6.5 的防火墙白名单
linux·运维·centos
xzl0427 分钟前
centos yum源,docker源
linux·docker·centos
看到我,请让我去学习36 分钟前
LInux—shell编程
android·linux·chrome
孤寂大仙v1 小时前
【Linux笔记】——网络基础
linux·网络·笔记
Geek-SX2 小时前
Seata1.8.0安装部署流程linux
linux·运维·服务器
.小墨迹2 小时前
Python学习——执行python时,键盘按下ctrl+c,退出程序
linux·开发语言·python·学习·自动驾驶
AI+程序员在路上2 小时前
MIPI摄像头linux驱动开发步骤及说明
linux·c语言·开发语言·驱动开发
Strugglingler2 小时前
Linux shell 正则表达式高效使用
linux·shell