【MongoDB】查看集合是否分片 及片健创建、删除
查看分片键MongoDB会把分片过的集合保存在config.collection集合中,若需要查看分片键,则需要根据该集合进行查找。官方的其他很多分片快捷命令也都处于config库三种方式去config库中查询这种办法可以查看分片键信息db.collections.find({$and:[...
查看分片键
MongoDB会把分片过的集合保存在config.collection集合中,若需要查看分片键,则需要根据该集合进行查找。官方的其他很多分片快捷命令也都处于config库
这种办法可以查看分片键信息
db.collections.find( {'dropped':{$ne:true},'_id':'dbname.collectname'})
查看数据分布
use dbname
db.colname.getShardDistribution() #可以查看数据分布
最简单的方法
use databaseName;
db.collectionName.stats().sharded #简单的返回true或者false
查看分片状态
查看分片状态
use dbname
sh.status()
创建片健
在 指定testdb分片生效
mongodb 集群搭建:分片+副本集_我家小宝_朱朱的博客-CSDN博客
#指定test分片生效
db.runCommand( { enablesharding :"testdb"});
或者
sh.enableSharding("test")
在collectionname 所在的db_name建索引
在use admin库执行shareCollection
指定分片的片键
片键有两种模式:hash模式,range模式
使用hash模式分片: 记录在各片上的分布比较平均
建索引:
mongos> db.person.ensureIndex({_id:" hashed"})
mongos> sh.shardCollection( "new.person", { "_id": "hashed" } )
使用range模式分片
mongos> sh.shardCollection( "new.person2", { "name": 1 } )
要分片的库原来有数据的情况下,先建index,然后再指定片键
mongos> sh.enableSharding("new2")
mongos> use new2
mongos> db.user2.createIndex( { "username": 1 } )
mongos> sh.shardCollection( "new2.user2", { "username": 1 } )
语法:
sh.
shardCollection
(namespace, key, unique, options)
设置唯一性主键
mongos> sh.shardCollection( "new2.user2", { "username": 1 } ,{unique:true})
测试分片配置结果
mongo 127.0.0.1:20000
#使用testdb
use testdb;
#插入测试数据
for (var i = 1; i <= 100000; i++)
db.table1.save({id:i,"test1":"testval1"});
#查看分片情况如下,部分无关信息省掉了
db.table1.stats();
{
"sharded" : true,
"ns" : "testdb.table1",
"count" : 100000,
"numExtents" : 13,
"size" : 5600000,
"storageSize" : 22372352,
"totalIndexSize" : 6213760,
"indexSizes" : {
"_id_" : 3335808,
"id_1" : 2877952
},
"avgObjSize" : 56,
"nindexes" : 2,
"nchunks" : 3,
"shards" : {
"shard1" : {
"ns" : "testdb.table1",
"count" : 42183,
"size" : 0,
...
"ok" : 1
},
"shard2" : {
"ns" : "testdb.table1",
"count" : 38937,
"size" : 2180472,
...
"ok" : 1
},
"shard3" : {
"ns" : "testdb.table1",
"count" :18880,
"size" : 3419528,
...
"ok" : 1
}
},
"ok" : 1
}
可以看到数据分到3个分片,各自分片数量为: shard1 “count” : 42183,shard2 “count” : 38937,shard3 “count” : 18880。已经成功了!
发片后,片健不可改变;一个集合只能有一个片健;片健必须有索引
删除片健
发片后,片健不可改变;一个集合只能有一个片健;片健必须有索引,再建片健
--导出整张表
mongoexport -h ip --port 27017 -d db_nane -c collectionname -o /data/zcy/pdm1
-- 删除表
> db.PDM_产品小类.drop()
-- 导入数据
mongoimport -h ip --port 27017 -d db_nane -c collectionname --upsert --file /data/zcy/pdm1
-- 建索引 (业务索引)
db.collectionname.createIndex({"metadata.id":1,"metadata.systemtag":1})
--千万不要建 ,{unique: true} 唯一,否则建片健是使用唯一时 会报错
--建已有表的片健前,建索引
db.collectionname.createIndex({"metadata.systemtag":1,"metadata.id":1},{unique: true})
--建片健
sh.shardCollection( "dbname.collectionname",{"metadata.systemtag":1,"metadata.id":1} ,{unique:true} )
更多推荐
所有评论(0)