mongoDB分片集群常用指令


1.帮助指令:sh.help(),查看有哪些指令及其含义和使用方法。

mongos> sh.help()
	sh.addShard( host )                       server:port OR setname/server:port
	sh.enableSharding(dbname)                 enables sharding on the database dbname
	sh.shardCollection(fullName,key,unique)   shards the collection
	sh.splitFind(fullName,find)               splits the chunk that find is in at the median
	sh.splitAt(fullName,middle)               splits the chunk that middle is in at middle
	sh.moveChunk(fullName,find,to)            move the chunk where 'find' is to 'to' (name of shard)
	sh.setBalancerState(  )   turns the balancer on or off true=on, false=off
	sh.getBalancerState()                     return true if enabled
	sh.isBalancerRunning()                    return true if the balancer has work in progress on any mongos
	sh.disableBalancing(coll)                 disable balancing on one collection
	sh.enableBalancing(coll)                  re-enable balancing on one collection
	sh.addShardTag(shard,tag)                 adds the tag to the shard
	sh.removeShardTag(shard,tag)              removes the tag from the shard
	sh.addTagRange(fullName,min,max,tag)      tags the specified range of the given collection
	sh.removeTagRange(fullName,min,max,tag)   removes the tagged range of the given collection
	sh.status()                               prints a general overview of the cluster

或者直接运行help查看系统指令:

mongos> help
	db.help()                    help on db methods
	db.mycoll.help()             help on collection methods
	sh.help()                    sharding helpers
	rs.help()                    replica set helpers
	help admin                   administrative help
	help connect                 connecting to a db help
	help keys                    key shortcuts
	help misc                    misc things to know
	help mr                      mapreduce

	show dbs                     show database names
	show collections             show collections in current database
	show users                   show users in current database
	show profile                 show most recent system.profile entries with time >= 1ms
	show logs                    show the accessible logger names
	show log [name]              prints out the last segment of log in memory, 'global' is default
	use                 set current database
	db.foo.find()                list objects in collection foo
	db.foo.find( { a : 1 } )     list objects in foo where a == 1
	it                           result of the last line evaluated; use to further iterate
	DBQuery.shellBatchSize = x   set default number of items to display on shell
	exit                         quit the mongo shell


2.sh.status() :查看分片的状态信息:

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("55cd8969e940b6d9c82cd178")
}
  shards:
    {  "_id" : "shard0000",  "host" : "219.219.220.180:27017" }
    {  "_id" : "shard0001",  "host" : "219.219.220.248:27017" }
    {  "_id" : "shard0002",  "host" : "219.219.220.131:27017" }
  balancer:
    Currently enabled:  yes
    Currently running:  no
    Failed balancer rounds in last 5 attempts:  0
    Migration Results for the last 24 hours: 
        No recent migrations
  databases:
    {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
    {  "_id" : "xubo",  "partitioned" : true,  "primary" : "shard0002" }
        xubo.resume_meta_data
            shard key: { "_id" : "hashed" }
            chunks:
                shard0000    2
                shard0001    2
                shard0002    2
            { "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-6148914691236517204") } on : shard0002 Timestamp(3, 2) 
            { "_id" : NumberLong("-6148914691236517204") } -->> { "_id" : NumberLong("-3074457345618258602") } on : shard0002 Timestamp(3, 3) 
            { "_id" : NumberLong("-3074457345618258602") } -->> { "_id" : NumberLong(0) } on : shard0000 Timestamp(3, 4) 
            { "_id" : NumberLong(0) } -->> { "_id" : NumberLong("3074457345618258602") } on : shard0000 Timestamp(3, 5) 
            { "_id" : NumberLong("3074457345618258602") } -->> { "_id" : NumberLong("6148914691236517204") } on : shard0001 Timestamp(3, 6) 
            { "_id" : NumberLong("6148914691236517204") } -->> { "_id" : { "$maxKey" : 1 } } on : shard0001 Timestamp(3, 7) 
    {  "_id" : "test",  "partitioned" : false,  "primary" : "shard0002" }
    {  "_id" : "ustc",  "partitioned" : false,  "primary" : "shard0000" }
    {  "_id" : "test2",  "partitioned" : false,  "primary" : "shard0001" }
    {  "_id" : "test1",  "partitioned" : false,  "primary" : "shard0001" }
    {  "_id" : "testdb",  "partitioned" : false,  "primary" : "shard0001" }


显示有shard0000,shard0001,shard0002三个分片。admin,xubo等五个数据库,_id后面为数据库名;partitioned表示是否分区,true为是;primary表示数据库的主分区,所有的数据都会位于主分区上,MongoDB目前还不能主动将数据分发到不同的分片上,因为它不知道你希望如何分发数据(参考【1】,P236)。自己测试了插入333821557个文档,大小大概为58G,经查询所有数据都在主分区,其他分区基本没有数据。


3.db.stats(): 查看数据库信息,辅助分片数据库信息查询。

switched to db xubo
mongos> db.stats()
{
	"raw" : {
		"ip_node1:27017" : {
			"db" : "xubo",
			"collections" : 3,
			"objects" : 8,
			"avgObjSize" : 88,
			"dataSize" : 704,
			"storageSize" : 20480,
			"numExtents" : 3,
			"indexes" : 3,
			"indexSize" : 24528,
			"fileSize" : 67108864,
			"nsSizeMB" : 16,
			"extentFreeList" : {
				"num" : 0,
				"totalSize" : 0
			},
			"dataFileVersion" : {
				"major" : 4,
				"minor" : 22
			},
			"ok" : 1
		},
		"ip_node2:27017" : {
			"db" : "xubo",
			"collections" : 3,
			"objects" : 8,
			"avgObjSize" : 88,
			"dataSize" : 704,
			"storageSize" : 20480,
			"numExtents" : 3,
			"indexes" : 3,
			"indexSize" : 24528,
			"fileSize" : 67108864,
			"nsSizeMB" : 16,
			"extentFreeList" : {
				"num" : 0,
				"totalSize" : 0
			},
			"dataFileVersion" : {
				"major" : 4,
				"minor" : 22
			},
			"ok" : 1
		},
		"ip_node3:27017" : {
			"db" : "xubo",
			"collections" : 4,
			"objects" : 333821541,
			"avgObjSize" : 111.99999904140398,
			"dataSize" : 37388012272,
			"storageSize" : 43648786160,
			"numExtents" : 44,
			"indexes" : 4,
			"indexSize" : 10831008832,
			"fileSize" : 57887686656,
			"nsSizeMB" : 16,
			"extentFreeList" : {
				"num" : 0,
				"totalSize" : 0
			},
			"dataFileVersion" : {
				"major" : 4,
				"minor" : 22
			},
			"ok" : 1
		}
	},
	"objects" : 333821557,
	"avgObjSize" : 110.99999889761463,
	"dataSize" : 37388013680,
	"storageSize" : 43648827120,
	"numExtents" : 50,
	"indexes" : 10,
	"indexSize" : 10831057888,
	"fileSize" : 58021904384,
	"extentFreeList" : {
		"num" : 0,
		"totalSize" : 0
	},
	"ok" : 1
}

ip_node1-3是具体的ip地址,这个因设置而不同。上面现实了xubo数据库三个不同分片上的信息,数据基本都在主分区。"objects" : 333821541,

4.数据库分区:

mongos> sh.enableSharding("testdb")
{ "ok" : 1 }

通过sh.status()查看显示testdb已经分片:

	{  "_id" : "testdb",  "partitioned" : true,  "primary" : "shard0001" }


5.对表建立索引db.table2.ensureIndex({"id":1})

mongos> db.table2.ensureIndex({"id":1})
{
	"raw" : {
		"ip_node1:27017" : {
			"createdCollectionAutomatically" : true,
			"numIndexesBefore" : 1,
			"numIndexesAfter" : 2,
			"ok" : 1
		}
	},
	"ok" : 1
}

6.对表建立分片:sh.shardCollection("testdb.table2",{"id":1})

mongos> sh.shardCollection("testdb.table2",{"id":1})
{ "collectionsharded" : "testdb.table2", "ok" : 1 }

查看分片情况:

	{  "_id" : "testdb",  "partitioned" : true,  "primary" : "shard0001" }
		testdb.table1
			shard key: { "id" : 1 }
			chunks:
				shard0000	1
				shard0001	1
				shard0002	1
			{ "id" : { "$minKey" : 1 } } -->> { "id" : 1 } on : shard0000 Timestamp(2, 0) 
			{ "id" : 1 } -->> { "id" : 9 } on : shard0002 Timestamp(3, 0) 
			{ "id" : 9 } -->> { "id" : { "$maxKey" : 1 } } on : shard0001 Timestamp(3, 1) 
		testdb.table2
			shard key: { "id" : 1 }
			chunks:
				shard0001	1
			{ "id" : { "$minKey" : 1 } } -->> { "id" : { "$maxKey" : 1 } } on : shard0001 Timestamp(1, 0) 
		testdb.users
			shard key: { "username" : 1 }
			chunks:
				shard0000	1
				shard0001	1
				shard0002	1
			{ "username" : { "$minKey" : 1 } } -->> { "username" : 2 } on : shard0000 Timestamp(2, 0) 
			{ "username" : 2 } -->> { "username" : 10 } on : shard0002 Timestamp(3, 0) 
			{ "username" : 10 } -->> { "username" : { "$maxKey" : 1 } } on : shard0001 Timestamp(3, 1) 

显示已经分片


7.查看某个表的状态信息:db.table2.stats()

mongos> db.table2.stats()
{
	"sharded" : true,
	"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
	"userFlags" : 1,
	"capped" : false,
	"ns" : "testdb.table2",
	"count" : 111111,
	"numExtents" : 9,
	"size" : 12444432,
	"storageSize" : 22523904,
	"totalIndexSize" : 7064064,
	"indexSizes" : {
		"_id_" : 3638320,
		"id_1" : 3425744
	},
	"avgObjSize" : 112,
	"nindexes" : 2,
	"nchunks" : 3,
	"shards" : {
		"shard0000" : {
			"ns" : "testdb.table2",
			"count" : 0,
			"size" : 0,
			"numExtents" : 1,
			"storageSize" : 8192,
			"lastExtentSize" : 8192,
			"paddingFactor" : 1,
			"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
			"userFlags" : 1,
			"capped" : false,
			"nindexes" : 2,
			"totalIndexSize" : 16352,
			"indexSizes" : {
				"_id_" : 8176,
				"id_1" : 8176
			},
			"ok" : 1
		},
		"shard0001" : {
			"ns" : "testdb.table2",
			"count" : 111070,
			"size" : 12439840,
			"avgObjSize" : 112,
			"numExtents" : 7,
			"storageSize" : 22507520,
			"lastExtentSize" : 11325440,
			"paddingFactor" : 1,
			"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
			"userFlags" : 1,
			"capped" : false,
			"nindexes" : 2,
			"totalIndexSize" : 7031360,
			"indexSizes" : {
				"_id_" : 3621968,
				"id_1" : 3409392
			},
			"ok" : 1
		},
		"shard0002" : {
			"ns" : "testdb.table2",
			"count" : 41,
			"size" : 4592,
			"avgObjSize" : 112,
			"numExtents" : 1,
			"storageSize" : 8192,
			"lastExtentSize" : 8192,
			"paddingFactor" : 1,
			"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
			"userFlags" : 1,
			"capped" : false,
			"nindexes" : 2,
			"totalIndexSize" : 16352,
			"indexSizes" : {
				"_id_" : 8176,
				"id_1" : 8176
			},
			"ok" : 1
		}
	},
	"ok" : 1
}

8.查看块大小:

mongos> use config

switched to db config


mongos> db.settings.find()
{ "_id" : "chunksize", "value" : 100 }

查看有哪些块:

mongos> use config
switched to db config
mongos> db.chunks.find()
{ "_id" : "xubo.resume_meta_data-_id_MinKey", "lastmod" : Timestamp(3, 2), "lastmodEpoch" : ObjectId("55cd8aa4e940b6d9c82cd1bf"), "ns" : "xubo.resume_meta_data", "min" : { "_id" : { "$minKey" : 1 } }, "max" : { "_id" : NumberLong("-6148914691236517204") }, "shard" : "shard0002" }
{ "_id" : "xubo.resume_meta_data-_id_-3074457345618258602", "lastmod" : Timestamp(3, 4), "lastmodEpoch" : ObjectId("55cd8aa4e940b6d9c82cd1bf"), "ns" : "xubo.resume_meta_data", "min" : { "_id" : NumberLong("-3074457345618258602") }, "max" : { "_id" : NumberLong(0) }, "shard" : "shard0000" }
{ "_id" : "xubo.resume_meta_data-_id_3074457345618258602", "lastmod" : Timestamp(3, 6), "lastmodEpoch" : ObjectId("55cd8aa4e940b6d9c82cd1bf"), "ns" : "xubo.resume_meta_data", "min" : { "_id" : NumberLong("3074457345618258602") }, "max" : { "_id" : NumberLong("6148914691236517204") }, "shard" : "shard0001" }
{ "_id" : "xubo.resume_meta_data-_id_-6148914691236517204", "lastmod" : Timestamp(3, 3), "lastmodEpoch" : ObjectId("55cd8aa4e940b6d9c82cd1bf"), "ns" : "xubo.resume_meta_data", "min" : { "_id" : NumberLong("-6148914691236517204") }, "max" : { "_id" : NumberLong("-3074457345618258602") }, "shard" : "shard0002" }
{ "_id" : "xubo.resume_meta_data-_id_0", "lastmod" : Timestamp(3, 5), "lastmodEpoch" : ObjectId("55cd8aa4e940b6d9c82cd1bf"), "ns" : "xubo.resume_meta_data", "min" : { "_id" : NumberLong(0) }, "max" : { "_id" : NumberLong("3074457345618258602") }, "shard" : "shard0000" }
{ "_id" : "xubo.resume_meta_data-_id_6148914691236517204", "lastmod" : Timestamp(3, 7), "lastmodEpoch" : ObjectId("55cd8aa4e940b6d9c82cd1bf"), "ns" : "xubo.resume_meta_data", "min" : { "_id" : NumberLong("6148914691236517204") }, "max" : { "_id" : { "$maxKey" : 1 } }, "shard" : "shard0001" }
{ "_id" : "testdb.users-username_MinKey", "lastmod" : Timestamp(2, 0), "lastmodEpoch" : ObjectId("55d444f3a2c399eae2842423"), "ns" : "testdb.users", "min" : { "username" : { "$minKey" : 1 } }, "max" : { "username" : 2 }, "shard" : "shard0000" }
{ "_id" : "testdb.users-username_2.0", "lastmod" : Timestamp(3, 0), "lastmodEpoch" : ObjectId("55d444f3a2c399eae2842423"), "ns" : "testdb.users", "min" : { "username" : 2 }, "max" : { "username" : 10 }, "shard" : "shard0002" }
{ "_id" : "testdb.users-username_10.0", "lastmod" : Timestamp(3, 1), "lastmodEpoch" : ObjectId("55d444f3a2c399eae2842423"), "ns" : "testdb.users", "min" : { "username" : 10 }, "max" : { "username" : { "$maxKey" : 1 } }, "shard" : "shard0001" }
{ "_id" : "testdb.table1-id_MinKey", "lastmod" : Timestamp(2, 0), "lastmodEpoch" : ObjectId("55d44875a2c399eae28424da"), "ns" : "testdb.table1", "min" : { "id" : { "$minKey" : 1 } }, "max" : { "id" : 1 }, "shard" : "shard0000" }










你可能感兴趣的:(云计算,mongodb)