1.下载 mongo最新版本
docker pull mongo
2.创建配置服务复制集
10.60.0.22服务器:docker run -d --name configsvr0 -p 10021:27019 -v /home/mongodb/data/configsvr0:/data/configdb mongo --configsvr --replSet "rs_configsvr" --bind_ip_all
10.60.0.23服务器:docker run -d --name configsvr0 -p 10022:27019 -v /home/mongodb/data/configsvr1:/data/configdb mongo --configsvr --replSet "rs_configsvr" --bind_ip_all
10.60.0.24服务器:docker run -d --name configsvr0 -p 10023:27019 -v /home/mongodb/data/configsvr2:/data/configdb mongo --configsvr --replSet "rs_configsvr" --bind_ip_all
3.初始化配置服务复制集:
docker exec -it configsvr0 bashmongo --host 10.60.0.22 --port 10021
rs.initiate( { _id: "rs_configsvr", configsvr: true, members: [ { _id: 0, host : "10.60.0.22:10021" }, { _id: 1, host : "10.60.0.23:10022" }, { _id: 2, host : "10.60.0.24:10023" } ] });
4.创建分片复制集
10.60.0.22服务器:
mkdir /home/mongodb/data/shardsvr00;
mkdir /home/mongodb/data/shardsvr10;
-------------------------------------------------------------------------
docker run --name shardsvr00 \
-p 10031:27018 -d \
-v /home/mongodb/data/shardsvr00:/data/db \
mongo --shardsvr --replSet "rs_shardsvr0" \
--bind_ip_all;
-------------------------------------------------------------------------
docker run --name shardsvr10 \
-p 10041:27018 -d \
-v /home/yyt/mongodb/data/shardsvr10:/data/db \
mongo --shardsvr --replSet "rs_shardsvr1" \
--bind_ip_all;
10.60.0.23服务器:
mkdir /home/mongodb/data/shardsvr00;
mkdir /home/mongodb/data/shardsvr10;
-------------------------------------------------------------------------
docker run --name shardsvr00 \
-p 10032:27018 -d \
-v /home/mongodb/data/shardsvr00:/data/db \
mongo --shardsvr --replSet "rs_shardsvr0" \
--bind_ip_all;
-------------------------------------------------------------------------
docker run --name shardsvr10 \
-p 10042:27018 -d \
-v /home/yyt/mongodb/data/shardsvr10:/data/db \
mongo --shardsvr --replSet "rs_shardsvr1" \
--bind_ip_all;
10.60.0.24服务器:
mkdir /home/mongodb/data/shardsvr00;
mkdir /home/mongodb/data/shardsvr10;
-------------------------------------------------------------------------
docker run --name shardsvr00 \
-p 10033:27018 -d \
-v /home/mongodb/data/shardsvr00:/data/db \
mongo --shardsvr --replSet "rs_shardsvr0" \
--bind_ip_all;
-------------------------------------------------------------------------
docker run --name shardsvr10 \
-p 10043:27018 -d \
-v /home/yyt/mongodb/data/shardsvr10:/data/db \
mongo --shardsvr --replSet "rs_shardsvr1" \
--bind_ip_all;
5.初始化副本集
docker exec -it shardsvr00 bash
mongo --host 10.60.0.22 --port 10031
rs.initiate(
{
_id: "rs_shardsvr0",
members: [
{ _id: 0, host : "10.60.0.22:10031" },
{ _id: 1, host : "10.60.0.23:10032" },
{ _id: 2, host : "10.60.0.24:10033" }
]
}
);
----------------------------------------------------------------------------
docker exec -it shardsvr10 bash
mongo --host 10.60.0.22 --port 10041
rs.initiate(
{
_id: "rs_shardsvr1",
members: [
{ _id: 0, host : "10.60.0.22:10041" },
{ _id: 1, host : "10.60.0.23:10042" },
{ _id: 2, host : "10.60.0.24:10043" }
]
}
);
6.创建mongos,连接mongos到分片集群
docker run --name mongos0 -d -p 20000:27017 --entrypoint "mongos" mongo --configdb rs_configsvr/10.60.0.22:10021,10.60.0.23:10022,10.60.0.24:10023 --bind_ip_all
7.添加分片到集群
docker exec -it mongos0 bash
mongo --host 10.60.0.22 --port 20000
sh.addShard("rs_shardsvr0/10.60.0.22:10031,10.60.0.23:10032,10.60.0.24:10033")
sh.addShard("rs_shardsvr1/10.60.0.22:10041,10.60.0.23:10042,10.60.0.24:10043")
8.测试脚本
#!/bin/sh
1、开启分片数据库分片设置
db.runCommand({
enablesharding : "testdb"
})
2、创建分片片键(id)
db.runCommand({
shardcollection : "testdb.users",
key : {id : 1}
})
3、创建索引
use testdb
db.users.ensureIndex( {id : 1} )
4、添加测试数据
var arr = [];
for(var i = 1;i <= 15000; i++){
var uid = i;
var name = "yyt" + i;
var age = Math.random()*100;
arr.push(
{
"id":uid,
"name":name,
"age":age
}
);
}
db.users.insertMany(arr);
db. users .find().count();