1 . 启动2台配置服务器 端口分别为30000,30001 ,配置服务器在3.4版本配置成副本集CSRS模式
启动命令
mongod -f svr1.conf
mongod -f svr2.conf
配置文件1
dbpath=G:\confServer\confsvr1\data
logpath=G:\confServer\confsvr1\log\log.log
logappend=true
port=30000
configsvr=true
配置文件2
dbpath=G:\confServer\confsvr2\data
logpath=G:\confServer\confsvr2\log\log.log
logappend=true
port=30001
configsvr=true
2 . 启动2台路由服务器 端口分别为20000,20001
启动命令
mongos -f mongos1.conf
mongos -f mongos2.conf
mongos1.conf
configdb=127.0.0.1:30000,127.0.0.1:30001 #配置服务器的地址
port=20000
logpath=G:\mongos\mongos1\log.log
mongos2.conf
configdb=127.0.0.1:30000,127.0.0.1:30001 #配置服务器的地址</br>
port=20001
logpath=G:\mongos\mongos2\log.log
3 . 配置3个分片的副本集
a . 配置分片1的副本集 1主1从1个仲裁节点
启动命令
mongod -f shard1.conf
mongod -f shard1_second.conf
mongod -f shard1_arbiter.conf
shard1.conf
dbpath=G:\shards\shard1\rs1\data
logpath=G:\shards\shard1\rs1\log\log.log
logappend=true
port=40000
shardsvr=true #分片服务器
replSet=shard1 #副本集
shard1_second.conf
dbpath=G:\shards\shard1\rs2\data
logpath=G:\shards\shard1\rs2\log\log.log
logappend=true
port=40001
shardsvr=true #分片服务器
replSet=shard1 #副本集
shard1_arbiter.conf
dbpath=G:\shards\shard1\rs3\data
logpath=G:\shards\shard1\rs3\log\log.log
logappend=true
port=40002
shardsvr=true #分片服务器
replSet=shard1 #副本集
启动好副本集shard1的3个服务器后,任意登录其中一个机器配置副本集,mongo 127.0.0.1:40000
use admin
config = { _id:"shard1", members:
[
{_id:0,host:"127.0.0.1:40000"},
{_id:1,host:"127.0.0.1:40001"},
{_id:2,host:"127.0.0.1:40002",arbiterOnly:true} #仲裁节点
]
}
rs.initiate(config);
按副本集shard1那样把副本集shard2,shard3配置好
把路由,配置服务器,分片及其副本集都配置好后,需要将路由和分片连接在一起,登录任意一个路由 mongo 127.0.0.1:20000
use admin
db.runCommand({addshard:"shard1/127.0.0.1:40000,127.0.0.1:40001,127.0.0.1:40002"})
db.runCommand({addshard:"shard2/127.0.0.1:40010,127.0.0.1:40011,127.0.0.1:40012"})
db.runCommand({addshard:"shard3/127.0.0.1:40020,127.0.0.1:40021,127.0.0.1:40022"})
db.runCommand( { listshards : 1 } ) #看看分片服务器的配置
可以看到如下输出
{
"shards" : [
{
"_id" : "shard1",
"host" : "shard1/127.0.0.1:40000,127.0.0.1:40001,127.0.0.1:40002"
},
{
"_id" : "shard2",
"host" : "shard2/127.0.0.1:40010,127.0.0.1:40011,127.0.0.1:40012"
},
{
"_id" : "shard3",
"host" : "shard3/127.0.0.1:40020,127.0.0.1:40021,127.0.0.1:40022"
}
],
"ok" : 1
}
接下来配置指定的数据库的集合自动分片生效
db.runCommand( { enablesharding :"db"});#指定testdb分片生效
db.runCommand( { shardcollection : "db.collection",key : {"分片键名": 1} } )#PS:键名需要是索引键
已经配置完毕,可以批量插入些数据是否成功
for (var i = 1; i <= 100000; i++)
db.table1.save({id:i,"test1":"testval1"});