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" })
相关推荐
ZZH1120KQ3 小时前
Linux 进程和计划任务管理
linux
在未来等你4 小时前
SQL进阶之旅 Day 29:NoSQL结合使用策略
redis·sql·mongodb·elasticsearch·postgresql·nosql·hybrid-database
Linux运维技术栈5 小时前
Vim 命令大全:从入门到精通
linux·编辑器·vim
c7_ln5 小时前
Linux基本指令(包含vim,用户,文件等方面)超详细
linux·操作系统·vim
晨曦backend6 小时前
Vim 撤销 / 重做 / 操作历史命令汇总
linux·编辑器·vim
晨曦backend6 小时前
Vim 插件管理:MiniBufExplorer 使用指南
linux·编辑器·vim
fatiaozhang95277 小时前
中兴B860AV1.1_晨星MSO9280芯片_4G和8G闪存_TTL-BIN包刷机固件包
android·linux·adb·电视盒子·av1·魔百盒刷机
froxy7 小时前
Panthor 开源方案与 Mesa 图形库的技术解析
linux·开源
nice_evil7 小时前
华为Openeuler/Linux/CentOs 网络配置及故障排查/远程连接设置ssh/ibmc等问题及解决方案合集
linux·网络·centos·openeuler·网络配置与激活
liulilittle7 小时前
OpenSSL 的 AES-NI 支持机制
linux·运维·服务器·算法·加密·openssl·解密