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" })
相关推荐
无足鸟ICT3 小时前
【RHCA+】安装Tuned
linux·服务器·centos
测试界的小码农8 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
一条破秋裤9 小时前
【1114】【并发控制】【笔记】
linux
2035去旅行11 小时前
ADB的底层原理
linux·adb·嵌入式·arm·soc
武子康11 小时前
单卡 A6000 跑 Qwen-Drive:怎样留下可比较的第一条基线?
linux·人工智能·深度学习
女神下凡11 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
落羽的落羽11 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
爱和冰阔落16 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
say_fall18 小时前
【Linux网络编程】UDP套接字编程:系统编程组件、基础回显服务、InetAddr与地址转换、翻译服务与线程池聊天室
linux·服务器·网络·udp·vr
ö Constancy18 小时前
一台电脑的硬件组成与作用:按功能分类详解(Windows 与 Linux 视角)
linux·windows·电脑