环境准备
shard1与shard2的分目录。
将mongodb中的bin目录文件复制到每个分片中,并创建db文件以及log文件存放数据库和日记·数据·。
启动分片服务
进入要分片的数据bin目录中启动cmd
mongo --shardsvr --replSet shard1 --dbpath "D:\mongodb\shard1\db" --port 4006 --logpath "D:\mongodb\shard1\log\shard1.log"
启动成功后不用关闭
同样的在shard2文件中的bin目录中启动cmd
mongo --shardsvr --replSet shard2--dbpath "D:\mongodb\shard2\db" --port 4007 --logpath "D:\mongodb\shard2\log\shard2.log"
再次在bin目录中启动cmd
mongo --shardsvr --replSet shard2 --dbpath "D:\mongodb\shard3\db" --port 4008 --logpath "D:\mongodb\shard3\shard1.log"
再再次启动cmd
mongo --shardsvr --replSet shard2 --dbpath "D:\mongodb\shard4\db" --port 4009 --logpath "D:\mongodb\shard4\shard2.log"
进入分片一 初始化分片集
进行配置
configl={_id:"shard1",[
{_id:0,host:"localhost:4006",priority:1},
{_id:1,host:"localhost:4007",priority:2}]}}
初始化
进入分片二 初始化分片集
配置
config2={_id:"shard2",members:[
{_id:0,host:"localhost:4008",proiority:2},
{_id:1,host:"localhost:4009",proiority:1}]}
配置启动Config Server
直接用前面设置好了的副本启动即可
在文件夹中添加data和log
启动Config1
进入分片的数据库bin目录中
mongod --configsvr --replSet confset --dbpath "D:\mongodb\config1\db" --port 4002 --logpath "D:\mongodb\config1\log\config1,log"
启动Config2
mongod --configsvr --replSet confset --dbpath "D:\mongodb\config2\db" --port 4003 --logpath "D:\mongodb\config2\log\config.log"
启动Config3
mongod --configsvr --replSet confset --dbpath "D:\mongodb\config3\db" --port 4004 --logpath "D:\mongodb\config3\log\config.log"
进入任意一个配置服务器的节点初始化配置服务器的群集
重新打开cmd,bin目录mongo 127.0.0.1:4002
配置设置
config3={_id:"confset",configsvr:true,members:[{_id:0,ho]}
配置路由服务器Route Process
创建专门的文件夹存放日志
在要进入分片的数据库bin目录中启动cmd
mongos --configdb confset/127.0.0.1:4002,127.0.0.1:4003,127.0.0.1:4003 --logpath"D:\mongodb\mongos\log\mongos.log" --port 4000
mongos:mongos就是一个路由器服务器,它会根据管理员设置的“片键”将数据分摊到自己管理的mongos集群,数据和片的对应关系以及相应的配置信息保存在“config服务器”上。
配置分片sharding,添加分片索引
bin目录下使用MongoDB Shell登录到mongos,添加Shard节点。
sh.addShard("shard1/localhost:4006,localhost:4007")
sh.addShard("shard2/localhost:4008,localhost:4009")
查看分片集
db.getsiblingDB("config").shards.find()
Mongodb分片测试
登入4000端口
mongo 127.0.0.1:4000
指定要分片的数据库
sh.enableSharding("test")
指定数据库里需要分片的集合和片键,片键根据实际情况选择
sh.shardCollection("test.c2",{"id":1})
其中1表示范围分片。"hashed"表示哈希分片。
如果集合已经包含数据,则必须在分片集合之前创造一个支持分片键的索引,如果集合为空,则mongodb将创建索引