mongodb部署Shard Cluster
一、创建集群认证文件
mkdir ./data ./confopenssl rand -base64 756 > ./conf/keyfilechmod 400 ./conf/keyfiledocker network create mongo-cluster
二、部署configsever副本集
#!/bin/bash
iname=mongodb:8.0.9
conf_name=mongo_conf_
replset_name=confrsecho "----------------- create configserver start -------------------------"for i in 1 2
dodocker 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
donedocker 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副本集
#!/bin/bash
iname=mongodb:8.0.9
shard_name=mongo_shard_
replset_name=shardrsecho "----------------- create shard replSet start -------------------------"
#部署分片
for i in 1 2
dodocker 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
donedocker 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
#!/bin/bash
iname=mongodb:8.0.9
conf_name=mongo_conf_
mongos_name=mongo_mongosecho "----------------- 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
添加分片
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()
五、创建用户
use admin
db.createUser({user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]
})
mongosh --port 27017 -u admin -p 123456# 启用分片数据库
sh.enableSharding("langchain_test_db")# 对集合分片(按字段哈希)
sh.shardCollection("langchain_test_db.langchain_test_collection", { "shardKey": "hashed" })