0

MongoDB分片管理

已有 184 阅读此文人 - - MongoDB,数据库 -

MongoDB分片管理(Sharding Administration)

下面介绍几个非常有用的命令,可以获取一个分片集群的一些配置信息。

1、:如果判断是否是分片集群

> db.runCommand({ isdbgrid : 1});

> db.runCommand({ismaster:1});

2、查询所有存在的分片

> db.runCommand({ listShards : 1});

{
"shards" : [
{
"_id" : "shard0000",
"host" : "localhost:10000"
},
{
"_id" : "shard0001",
"host" : "localhost:20000"
}
],
"ok" : 1
}

3、如何查询哪些数据库被分片了

这里我们需要查询config 数据库,getSisterDB命令用于返回config数据库。

> config = db.getSisterDB("config")

> config.system.namespaces.find()

4、查看分片的详细信息

> use admin

> db.printShardingStatus();

--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{  "_id" : "shard0000",  "host" : "localhost:10000" }
{  "_id" : "shard0001",  "host" : "localhost:20000" }
databases:
{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
{  "_id" : "shard",  "partitioned" : false,  "primary" : "shard0000" }
{  "_id" : "test",  "partitioned" : true,  "primary" : "shard0000" }
test.wz chunks:
shard0000    2
shard0001    1
{ "_id" : { $minKey : 1 } } -->> { "_id" : ObjectId("502364425a710d2041000000") } on : shard0000 { "t" : 2000, "i" : 1 }
{ "_id" : ObjectId("502364425a710d2041000000") } -->> { "_id" : ObjectId("502364445a710d20410008ee") } on : shard0000 { "t" : 1000, "i" : 3 }
{ "_id" : ObjectId("502364445a710d20410008ee") } -->> { "_id" : { $maxKey : 1 } } on : shard0001 { "t" : 2000, "i" : 0 }

第一个数据库是主数据库(admin database),没有分区,位于config服务器,端口37017.

第二个数据库是shard,没有分区,位于shard0000服务器,端口10000.

第三个数据库test,有分区,有2个块(chunk)。

5、块操作(chunk operations)

MongoDB 1.6版本以上的是可以自动的控制块的大小的,当然也是可以手动调整的。

db.runCommand( { moveChunk : "test.wz" ,

find : { car_no : "TR0166" } ,

to : "shard1" } )

参数说明:

movechunk:包含数据库名称的全命名空间的collection

find: 属于将被移动的块的查询语句

to: 将被移动的块的shard id

期待你一针见血的评论,Come on!

不用想啦,马上 "登录"  发表自已的想法.