首页 > 代码库 > MongoDB整理笔记の新增Shard Server

MongoDB整理笔记の新增Shard Server

    1、启动一个新Shard Server 进程

[root@localhost ~]# mkdir /data/shard/s2[root@localhost ~]# /Apps/mongo/bin/mongod --shardsvr --port 20002 --dbpath /data/shard/s2--fork --logpath /data/shard/log/s2.log --directoryperdball output going to: /data/shard/log/s2.logforked process: 6772

    2、配置新Shard Server

技术分享
[root@localhost ~]# /Apps/mongo/bin/mongo admin --port 40000MongoDB shell version: 1.8.1connecting to: 127.0.0.1:40000/admin> db.runCommand({ addshard:"localhost:20002" }){ "shardAdded" : "shard0002", "ok" : 1 }> printShardingStatus()--- Sharding Status ---sharding version: { "_id" : 1, "version" : 3 }shards:{ "_id" : "shard0000", "host" : "localhost:20000" }{ "_id" : "shard0001", "host" : "localhost:20001" }{ "_id" : "shard0002", "host" : "localhost:20002" } --新增Shard Serverdatabases:{ "_id" : "admin", "partitioned" : false, "primary" : "config" }{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }test.users chunks:shard0002 2shard0000 21shard0001 21too many chunksn to print, use verbose if you want to force printtest.users_2 chunks:shard0001 46shard0002 1shard0000 45too many chunksn to print, use verbose if you want to force print
View Code

   3、 查看分片表状态,以验证新Shard Server

技术分享
> use testswitched to db test> db.users_2.stats(){"sharded" : true,"ns" : "test.users_2",……"shard0002" : { --新的Shard Server 已有数据"ns" : "test.users_2","count" : 21848,"size" : 2097408,"avgObjSize" : 96,"storageSize" : 2793472,"numExtents" : 5,"nindexes" : 1,"lastExtentSize" : 2097152,"paddingFactor" : 1,"flags" : 1,"totalIndexSize" : 1277952,"indexSizes" : {"_id_" : 1277952},"ok" : 1}},"ok" : 1}>
View Code

    我们可以发现,当我们新增Shard Server 后数据自动分布到了新Shard 上,这是由MongoDB内部自已实现的。

MongoDB整理笔记の新增Shard Server