mongo分片集群docker安装,未梳理成文档,无参考意义
shard————————————————————————————————————————————————————
创建三个shard容器
docker run --name shard_server -itd --network=host mongo:6.0.1 --shardsvr --replSet "my_shard_s1"
docker run --name shard_server -itd --network=host mongo:6.0.1 --shardsvr --replSet "my_shard_s2"
docker run --name shard_server -itd --network=host mongo:6.0.1 --shardsvr --replSet "my_shard_s3"
分别初始化
echo """rs.initiate({_id : \"$a\",members: [{ _id : 0, host : \"$ip\" }]});""" |mongosh --port 27018
mongosh --host 192.168.2.196 --port 27018
rs.initiate({_id : "my_shard_s1",members: [{ _id : 0, host : "192.168.2.196:27018" }]});
mongosh --host 192.168.2.197--port 27018
rs.initiate({_id : "my_shard_s2",members: [{ _id : 0, host : "192.168.2.197:27018" }]});
mongosh --host 192.168.2.198 --port 27018
rs.initiate({_id : "my_shard_s3",members: [{ _id : 0, host : "192.168.2.198:27018" }]});
使用ip或者dns名称都可以
cong———————————————————————————————————————————
创建三个conf容器
docker run -d --name configsvr1 --network=host mongo:6.0.1 --configsvr --replSet "rs_configsvr"
-v /data/mongodb/configsvr2:/data/configdb
连接任意conf节点
mongosh --host 192.168.2.197 --port 27019
初始化conf集群
rs.initiate({_id: "rs_configsvr",configsvr: true,members: [{ _id : 0, host : "192.168.2.196:27019" },{ _id : 1, host : "192.168.2.197:27019" },{ _id : 2, host : "192.168.2.198:27019" }]});
rs.status();
mongos———————————————————————————————————————————————
创建mongos容器
docker run --name mongos0 -d --network=host mongo:6.0.1 mongos --configdb rs_configsvr/192.168.2.196:27019,192.168.2.197:27019,192.168.2.198:27019 --bind_ip_all
连接mongos
mongosh --host 192.168.2.196 --port 27017
添加分片,节点
sh.addShard("my_shard_s1/192.168.2.196:27018")
sh.addShard("my_shard_s2/192.168.2.197:27018")
sh.addShard("my_shard_s3/192.168.2.198:27018")
对h1库开启分片功能
use admin
db.runCommand({enablesharding:"h1"});
集群节点情况
db.stats()
哈希碎片键分片,所以要建立hash索引;此处是在集合s1的 ha字段上建立该索引
db.s1.ensureIndex({ha:"hashed"})
对集合进行分片,对sms集合进行分片,分片键是s1的ha字段。
sh.shardCollection("h1.s1", {ha:"hashed"})
写入数据测试分片,(有问题不能测试出哈希分片情况)
for(var i=1;i<=100000;i++) {db.s1.insertOne({"ha":"fcwehfuwegrf2u3f","n":"1212"})};
查阅数据分布情况:
db.s1.stats();
查看分片情况(节点)
use admin
db.runCommand( { listshards : 1 } );
其他
docker stop shard_server && docker rm shard_server &&docker stop configsvr && docker rm configsvr
docker stop mongos0 && docker rm mongos0