注意:shop是前几讲搭建起来的副本集(这节不会详细说明怎么搭建)
D: 副本集 shop1 数据路径: D:\MongDB_E\data\bin 端口:192.168.0.100:9100
E: 副本集 shop1 数据路径: D:\MongDB_F\data\bin 端口:192.168.0.100:9200
CNF: 配置服务器:D:\MongDB_CNF\data\bin 端口:192.168.0.100:9400
CNF: 配置服务器:E:\MongDB_CNF\data\bin 端口:192.168.0.100:9500
CNF: 配置服务器:E:\MongDB_CNF\data\bin 端口:192.168.0.100:9600
ROT: 副本集shop1 路由服务器,数据路径: D:\MongDB_ROT\data\bin
端口:192.168.0.100:9300
ROT: 在192.168.0.101指定路由服务器,数据路径: D:\MongDB_ROT\data\bin 端口: 9300
说明:
路由服务器会连接到由前几章节搭建起来的副本集合 shop,以及由D,E服务器新搭建的新副本集shop1(没有给分配仲裁服务器)
此次访问将通过客户端直接访问路由器,由路由器决定访问哪个副本集的primary。
1. 搭建副本集shop1
1) 启动副本集shop1端口9100
mongod --dbpath D:\MongDB_E\data\db --port 9100 --replSet shop1/192.168.0.100:9100 --shardsvr --bind_ip 192.168.0.100
2) 启动副本集shop1端口9200
mongod --dbpath D:\MongDB_F\data\db --port 9200 --replSet shop1/192.168.0.100:9100 --shardsvr --bind_ip 192.168.0.100
启动的时候一定要指定一个局域网IP地址,否则最后会报错,无法连接等的错误信息。启动副本集shop的时候也需要全部指定IP地址,在本例中shop集合对应的IP地址是,192.168.0.101
3) 初始化副本集shop1
登录9100端口,使用admin用户
执行命令初始化:
db.runCommand({"replSetInitiate":{
"_id":"shop1","members":[
{"_id":1,"host":"192.168.0.100:9100","priority":1},
{"_id":2,"host":"192.168.0.100:9200"}
]}})
Priority:1 指定默认的primary服务器 ,如果无法执行确认 数据库路径,命令编码是否正常。
4) 测试shop1成功初始化
5) 启动shop1 集合中的配置服务器
mongod --configsvr --port 9400 --dbpath D:\MongDB_CNF\data\db
mongod --configsvr --port 9500 --dbpath E:\MongDB_CNF\data\db
mongod --configsvr --port 9600 --dbpath E:\MongDB_CNF2\data\db
注意在192.168.0.100 即,shop1 集合所在的机器启动了三个配置服务器 9400 、9500和 9600。(因为在启动路由的时候如果写两个配置库,提示:要么1个配置服务器,要么3个配置服务器会报错。)
6) 启动shop1 集合中的路由服务器
mongos --configdb 192.168.0.100:9400,192.168.0.100:9500,192.168.0.100:9600 --port 9300 --chunkSize 1
configdb 参数后面跟的是配置服务器,并且数量为1或3
7) rs.isMaster() 查看当前连接服务器的状态。
2. Shop集合中配置路由服务器
ROT: 路由服务器,数据路径: D:\MongDB_ROT\data\bin 端口:192.168.0.101:9300
mongos --configdb 192.168.0.100:9400,192.168.0.100:9500,192.168.0.100:9600 --port 9300 --chunkSize 1
mongos 启动参数中,chunkSize 这一项是用来指定chunk 的大小的,单位是MB,默认大小
为200MB,为了方便测试Sharding 效果,我们把chunkSize 指定为 1MB
至此,在192.168.0.100 上配置的server,和route已经完成,在192.168.0.101 即:127.00.1上配置的server和route也完成。下面将给route 加入副本集合。
3. 配置Sharding
1) 登录shop1路由服务器添加副本集 sharing登录路由服务器 使用admin 将 两个副本集中的副本集数据库服务器,加入到当前share中:
db.runCommand({addshard:"shop1/192.168.0.100:9100,192.168.0.100:9200"});
db.runCommand({addshard:"shop/192.168.0.101:7400,192.168.0.101:7500,192.168.0.101:7600"})
2) 激活数据库及集合的分片
3) 测试数据
for(var i=1;i<=2000;i++) db.users.insert({id:i,addr_1:"Beijing",addr_2:"Shanghai"});
登陆路由服务器 9300 切换到test 数据库写入数据。
4) 查看分片的状态
db.users.stats();
可以看到shard2 和 shard1 里面都有对应的数据。(上图是新建的环境下测试的结果)
5)
4. Config服务器关闭后下次无法启动提示repair 使用如下命令执行恢复操作
执行修复后启动正常。