使用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:"数据库名"});