MongoDB分片常用操作

参看网址:http://www.jb51.net/article/92847.htm

#查看集群的信息

sh.status()  

db.printShardingStatus("vvvv")

sh.addShard("192.168.200.A:40000") #添加分片

sh.enableSharding("dba")  #首先对数据库启用分片

sh.shardCollection("dba.account",{"name":1})    #再对集合进行分片,name字段是片键。片键的选择:利于分块、分散写请求、查询数据。

sh.status()  

db.account.stats() #查看集合的分布情况

sh.stopBalancer() #停止均衡器

sh.setBalancerState(false)  #关闭自动均衡器,手动均衡

sh.setBalancerState(true) #打开均衡器

db.settings.find()          #查看均衡器状态

db.settings.update({"_id":"balancer"},{"$set":{"activeWindow":{"start":"08:00","stop":"02:00"}}},true) 均衡只会在早上8点到凌晨2点进行均衡操作

db.settings.find({"_id":"balancer"}) #查看

db.settings.save({"_id":"chunksize","value":32})把块的默认大小改成了32M

##手动移动块

sh.stopBalancer() #停止均衡器

#先到config.chunks上任意找一个块

db.chunks.find({"_id" : "abc.account-name_\"wPeFnJEvendSTbH\""}).pretty()

#abc.account集合中包含name(片键)""的快迁移到mablevi分片中

sh.moveChunk("abc.account",{"name" : "wPeFnJEvendSTbH"},"mablevi")  

sh.startBalancer() #打开均衡器

 db.runCommand({"removeshard":"mmm"}) #删除分片,必须在admin上。保证均衡器开启

 sh.status() ##查看数据删除进度

 db.adminCommand({"movePrimary":"test","to":"shard0001"}) #test的主分片从shard0000迁移到shard0001 。删除的是某库主分片需执行

 db.runCommand({"removeshard":"mmm"}) #再次执行查看是否完成

 db.adminCommand({"flushRouterConfig":1}) ##在路由服务器上刷新配置(每台都刷新,避免缓存对客户端程序影响)

##列出所有分片

db.runCommand({ listshards : 1 })

config数据库中各个集合作用,下边链接中给出了详细解释

http://www.jb51.net/article/92847.htm

一些注意事项:

注意事项:添加一台机器到分片集群时最好使用复制集初始化该节点,否则后期转换不方便

添加的分片如果已经有数据库,不要与现有分片中数据库同名,否则无法加入

不可以使用数组字段作为片键,一般特殊的索引都不会被用作分片

猜你喜欢

转载自blog.csdn.net/donghaixiaolongwang/article/details/79884933