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" })
相关推荐
吴声子夜歌1 分钟前
MongoDB 8.0——存储
数据库·mongodb
FriendshipT13 分钟前
Ubuntu 20.04 下使用 Ollama 本地部署 AI 大模型
linux·人工智能·python·深度学习·ubuntu
bellus-37 分钟前
win11使用ubuntu 26.04
linux·运维·ubuntu
吴声子夜歌44 分钟前
MongoDB 8.0——索引
数据库·mongodb
略略略咯咯1 小时前
centos更换镜像源
linux·运维·centos
j7~1 小时前
【Linux】二十七.线程篇四《Linux多线程编程:线程互斥(互斥量的底层到封装)、线程安全和冲入、死锁》---详解
linux·开发语言·c++·线程安全·死锁·线程互斥·重入
yunwei372 小时前
eBPF 入门实践教程第五十篇:使用 TCX Link 实现可组合的流量控制
linux·云原生·开源
石小千2 小时前
排查MongoDB慢日志问题
数据库·mongodb
2401_827501282 小时前
Linux系统移植
linux·arm开发·单片机
2601_965798473 小时前
Build a Consulting Site in 2026: Nifty Theme Practical Review
java·linux·数据库