版本4.0.9
分片的概念我就不说了。
下面讲我用的方式来测试mongodb的分片。
1.创建文件夹
在config创建文件
在data创建文件
2.配置cfg文件
分片1的副本集1
分片1的副本集2
分片1的副本集3
分片2的副本集1
分片2的副本集2
分片2的副本集3
配置节点1
配置节点2
配置节点3
路由节点
3.添加windows本地服务
cmd 管理员身份打开,切换到mongo的bin路径(注意 路由节点是mongos)
mongod -config "E:\my\config\shard11.cfg" --serviceName "MongoDB_Shard11" --install --serviceDisplayName "MongoDB_Shard11"
mongod -config "E:\my\config\shard12.cfg" --serviceName "MongoDB_Shard12" --install --serviceDisplayName "MongoDB_Shard12"
mongod -config "E:\my\config\shard13.cfg" --serviceName "MongoDB_Shard13" --install --serviceDisplayName "MongoDB_Shard13"
mongod -config "E:\my\config\shard21.cfg" --serviceName "MongoDB_Shard21" --install --serviceDisplayName "MongoDB_Shard21"
mongod -config "E:\my\config\shard22.cfg" --serviceName "MongoDB_Shard22" --install --serviceDisplayName "MongoDB_Shard22"
mongod -config "E:\my\config\shard23.cfg" --serviceName "MongoDB_Shard23" --install --serviceDisplayName "MongoDB_Shard23"
mongod -config "E:\my\config\config2.cfg" --serviceName "MongoDB_Config2" --install --serviceDisplayName "MongoDB_Config2"
mongod -config "E:\my\config\config3.cfg" --serviceName "MongoDB_Config3" --install --serviceDisplayName "MongoDB_Config3"
mongos -config "E:\my\config\route.cfg" --serviceName "MongoDB_Route" --install --serviceDisplayName "MongoDB_Route"
然后启动windows服务。
4.配置切片和Config Server副本集(Config Server 没有主次节点之分)。
连接到副本集的任意一个节点
mongo 127.0.0.1:13211
rs.initiate( {_id : "shard1",members: [{ _id: 0, host: "127.0.0.1:13211", priority:3 },{ _id: 1, host: "127.0.0.1:13212", priority:2 },{ _id: 2, host: "127.0.0.1:13213", arbiterOnly:true }]})
连接到副本集的任意一个节点
mongo 127.0.0.1:13221
rs.initiate( {_id : "shard2",members: [{ _id: 0, host: "127.0.0.1:13221", priority:3 },{ _id: 1, host: "127.0.0.1:13222", priority:2 },{ _id: 2, host: "127.0.0.1:13223", arbiterOnly:true }]})
连接到副本集的任意一个节点
mongo 127.0.0.1:13201
rs.initiate( {_id : "rscfg",members: [{ _id: 0, host: "127.0.0.1:13201" },{ _id: 1, host: "127.0.0.1:13202" },{ _id: 2, host: "127.0.0.1:13203" }]})
5.配置路由节点
启动路由本地服务。
连接路由节点
mongo 127.0.0.1:13200
配置分片shard1,shard2
use admin
db.runCommand({addshard:"shard1/127.0.0.1:13211,127.0.0.1:13212,127.0.0.1:13213"}) db.runCommand({addshard:"shard2/127.0.0.1:13221,127.0.0.1:13222,127.0.0.1:13223"})
查看一下分片列表,确认分片是否配置成功
db.runCommand({ listshards:1 })
6.数据库配置
对school库启用分片 db.runCommand({enablesharding:"school"})
指定数据库里需要分片的集合和片键,哈希 分片 db.runCommand( { shardcollection : "school.user", key : {name: "hashed"} } ) 范围片键 db.runCommand( { shardcollection : "school.use",key : {name: 1,time:1}} )
配置完毕。
插入数据,如果是哈希 分片这可以在两个分片上看到数据的分布,如果是范围片键 则需要大量数据,因为一个片建的默认值很大少量数据只会在一个片建上。