使用docker建立mongodb cluster步驟:
1.建立配置副本集
(1)建立副本集容器
docker run --name mongo_cluster_config1 -p 27001:27019 -d mongo mongod --configsvr --replSet configCluster
docker run --name mongo_cluster_config2 -p 27002:27019 -d mongo mongod --configsvr --replSet configCluster
docker run --name mongo_cluster_config3 -p 27003:27019 -d mongo mongod --configsvr --replSet configCluster
(2)副本集初始化
登入其中一台容器:
docker exec -it config容器ID /bin/bash
登入後進入mongo:
mongo --port 27019 //注意端口号
在mongo指令行運作:
rs.initiate({
_id:"configCluster",//副本集名
configsvr:true,//配置
members:[
{_id:0,host:"192.168.99.100:27001"},
{_id:1,host:"192.168.99.100:27002"},
{_id:2,host:"192.168.99.100:27003"}
]
})
2.建立分片1
docker run --name mongo_cluster_shard1 -p 27011:27018 -d mongo mongod --shardsvr --replSet shard1Cluster
docker run --name mongo_cluster_shard2 -p 27021:27018 -d mongo mongod --shardsvr --replSet shard1Cluster
docker run --name mongo_cluster_shard3 -p 27031:27018 -d mongo mongod --shardsvr --replSet shard1Cluster
mongo --port 27018 //注意端口号
_id:"shard1Cluster",
{_id:0,host:"192.168.99.100:27011"},
{_id:1,host:"192.168.99.100:27021"},
{_id:2,host:"192.168.99.100:27031"}
3.建立分片2
docker run --name mongo_cluster_shard4 -p 27041:27018 -d mongo mongod --shardsvr --replSet shard2Cluster
docker run --name mongo_cluster_shard5 -p 27051:27018 -d mongo mongod --shardsvr --replSet shard2Cluster
docker run --name mongo_cluster_shard6 -p 27061:27018 -d mongo mongod --shardsvr --replSet shard2Cluster
_id:"shard2Cluster",
{_id:0,host:"192.168.99.100:27041"},
{_id:1,host:"192.168.99.100:27051"},
{_id:2,host:"192.168.99.100:27061"}
注:rs.status()可檢視狀态
4.建立路由
(1)建立容器
docker run --name mongo_cluster_router1 -p 27101:27017 -d mongo mongos --configdb configCluster/192.168.99.100:27001,192.168.99.100:27002,192.168.99.100:27003
(2)初始化
use admin //僅admin資料庫下能執行以下指令
//添加分片
sh.addShard("shard1Cluster/192.168.99.100:27011,192.168.99.100:27021,192.168.99.100:27031")
sh.addShard("shard2Cluster/192.168.99.100:27041,192.168.99.100:27051,192.168.99.100:27061")
//開啟資料庫的sharding
db.runCommand({enablesharding:"資料庫名"});