参看网址: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
一些注意事项:
注意事项:添加一台机器到分片集群时最好使用复制集初始化该节点,否则后期转换不方便
添加的分片如果已经有数据库,不要与现有分片中数据库同名,否则无法加入
不可以使用数组字段作为片键,一般特殊的索引都不会被用作分片