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( <bool on or not> )   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(db.coll)                 disable balancing on one collection
 sh.enableBalancing(db.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 <db_name>                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", "lastm
————————————————
版权声明:本文为CSDN博主「KeepLearningBigData」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xubo245/article/details/47782557

猜你喜欢

转载自www.cnblogs.com/xibuhaohao/p/12377006.html