mongodb分片集群其它操作
6.1 Range分片配置及测试(生产不常用)
test库下的vast大表进行手工切片
6.1.1 激活数据库分片功能
mongo --port 38017 admin
admin> db.runCommand( { enablesharding : "数据库名称" } )
eg:
admin> db.runCommand( { enablesharding : "test" } )
6.1.2 指定分片建对集合分片
eg:范围片建
–创建索引
use test
> db.vast.ensureIndex( { id: 1 } )
–开启分片
use admin
> db.runCommand( { shardcollection : "test.vast",key : {id: 1} } )
6.1.3 集合分片验证
admin> use test
test> for(i=1;i<500000;i++){ db.vast.insert({"id":1,"name":"shenzheng","age":70,"date":new Date()}); }
test> db.vast.stats()
6.1.4 分片结果测试
shard1:
mongo --port 38021
db.vast.count();
shard2:
mongo --port 38024
db.vast.count();
6.2 Hash分片测试(生产常用)
Hash分片例子:
对oldboy库下的vast大表进行hash
创建哈希索引:
6.2.1 开启分片功能
mongo --port 38017 admin
use admin
admin> db.runCommand( { enablesharding : "oldboy" } )
6.2.2 对于oldboy库下的vast表建立hash索引
use oldboy
oldboy> db.vast.ensureIndex( { id: "hashed" } )
6.2.3 开启分片
use admin
admin> sh.shardCollection( "oldboy.vast",{id: "hashed" } )
6.2.4 录入数据测试
use oldboy
> for(i=1;i<500000;i++){ db.vast.insert({"id":1,"name":"shenzheng","age":70,"date":new Date()}); }
6.2.5 hash分片结果测试
mongo --port 38021
use oldboy
db.vast.count();
mongo --port 38024
use oldboy
db.vast.count();
6.3 判断是否shard集群
admin> db.runCommand({ isdbgrid : 1})
6.4 列出所有分片信息
admin> db.runCommand({ listshards : 1})
6.5 列出开启分片的数据库
admin> use config
config> db.database.find( { "partitioned": true} )
或者:
config> db.database.find()
6.6 查看分片的片健
config> db.collections.find().pretty()
6.7 查看分片的详细信息
admin>db.printShardingStatus()
或者
admin>db.status()
6.8 删除分片节点(谨慎)
(1)确认blance是否在工作
sh.getBalancerState()
(2)删除shard2节点(谨慎)
mongos> db.runCommand( { removeShard: "shard2" } )
注意:删除操作一定会立即出发balancer。