说明
使用docker在本机创建mongodb集群。这里只部署1个config server、1个mongo shard、1个mongos。读者可自行扩展到多个主机,多个config server、shard、mongos。
创建docker网络
docker network create test
创建mongodb config server
docker run -itd --name mongo-config -p 27019:27019 --network test mongo mongod --configsvr --replSet config
初始化config server的replica set
进入mongo-config容器
docker exec -it mongo-config bash
使用mongo shell链接config server
mongo --host mongo-config --port 27019
初始化replica set
rs.initiate(
{
_id: "config",
configsvr: true,
members: [
{ _id : 0, host : "mongo-config:27019" }
}
)
创建mongodb shard
docker run -itd --name mongo-shard -p 27018:27018 --network test mongo mongod --shardsvr --replSet shard
初始化mongodb shard的replica set
进入mongo-shard容器
docker exec -it mongo-shard bash
使用mongo shell链接shard
mongo --host mongo-shard --port 27018
初始化replica set
rs.initiate(
{
_id : "shard",
members: [
{ _id : 0, host : "mongo-shard:27018" }
]
}
)
创建mongos
docker run -itd --name mongo-router -p 27017:27017 --network test mongo mongos --configdb config/mongo-config:27019 --bind_ip_all
添加shard到集群
进入mongo-router容器
docker exec -it mongo-router bash
使用mongo shell链接mongos
mongo --host mongo-router --port 27017
添加shard
sh.addShard("shard/mongo-shard:27018")
创建shard Database
sh.enableSharding("test")
创建shard Collection
sh.shardCollection("test.log", { time : 1 } )
查看shard 状态
sh.status()
获取test.log集合的数据
use test
db.log.find({})