博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB - 分片管理
阅读量:6590 次
发布时间:2019-06-24

本文共 3720 字,大约阅读时间需要 12 分钟。

1.状态检查
mongos> sh.status();mongos> sh.status(true);

 

2.检查配置信息

配置信息都存在config数据库中
config.changelog          #跟踪集群记录操作config.chunks             #集合中块的信息config.collections        #集群内所有分片集合的信息config.databases          #集群内所有数据库的信息config.settings           #块大小设置config.shards             #集群内所有分片信息config.tags               #标签设置

3.连接信息

#查看连接统计
mongos> db.adminCommand({"connPoolStats":1}){        "hosts" : {                "localhost:30000::0" : {                        "available" : 1,                        "created" : 1                },                "localhost:30000::30" : {                        "available" : 3,                        "created" : 3                },                "localhost:30001::0" : {                        "available" : 1,                        "created" : 1                },                "localhost:30002::0" : {                        "available" : 1,                        "created" : 1                }        },        "replicaSets" : {        },        "createdByType" : {                "master" : 6        },        "totalAvailable" : 6,        "totalCreated" : 6,        "numDBClientConnection" : 9,        "numAScopedConnection" : 1,        "ok" : 1}mongos>

#限制连接数

客户端连接到mongos,mongos会创建至少一个到分片的连接; 一个mongos最多支持创建20000个连接.

 

参数maxCons选项可以限制连接数,可以在运行mongos的时候,指定参数maxConns,计算分片能够处理的来自单一mongos的连接数量:

maxCons = 20000-(mongos进程的数量*3)- (每个副本集的成员数量*3)- (其他/mongos进程的数量)

(mongos进程的数量*3) :每个mongos会为每个mongod创建3个连接:一个用于转发客户端请求;一个用于追踪错误信息,即写回监听器;一个用于监控副本集状态

(每个副本集的成员数量*3):主节点会与每个备份节点创建一个连接,而每个备份节点会与主节点创建两个连接,因此总共是3个连接

(其他/mongos进程的数量):其他进程是指可能连接到mongod的进程数量

 

4.添加服务器

(1) 添加分片

$./mongod --dbpath /mdb/data/s5 --logpath /mdb/mlog/s5.log --fork --port 27025  --smallfiles> sh.addShard("172.31.11.230:27025");

(2) 添加mongos

./mongos --logpath /mdb/mlog/ss2.log --fork --port 30001 --configdb 172.31.11.230:27020

(3) 添加配置服务器

./mongod --dbpath /mdb/data/sc --logpath /mdb/mlog/sc.log --fork --port 27020  --configsvrmongos连接多个”配置服务器“:./mongos --configdb config-1:port,config-2:port,config-3:port...

 

5.删除除分片 要保证均衡器是开启的

如果要删除的分片没有被作为primary库,直接使用

> db.adminCommand({"removeShard":"172.31.11.230:27028"})

如果被作为primary库,需要将这些数据库移走:

> db.adminCommand({"movePrimary":"blog","to":"172.31.11.230:27109"})> db.adminCommand({"removeShard":"172.31.11.230:27028"})

 

6.修改块的大小

> use config> db.settings.save({"_id":"chunksize","value":32});  #单位是m

 

7.手动移动块

sh.moveChunk("test.users",{"user_id":NumberLong("223439877780288900")},"spock");

将user_id为223439877780288900的块移到名为spock的分片上。

必须使用片键来找出需要移动的块。通常指定一个块的最简单的方法是指定他的下边界,不过指定块范围内的任何值都可以(最大值除外)。

 

8.特大块如果块的大小超过了config.settings中设置的大小,均衡器就无法移动这个块了。(1)检查特大块sh.status(); 如果块出现jumbo属性,表明该块是特大块(2)使用datasize命令检查块大小使用config.chunks集合,查看块范围> use config> var chunks = db.chunks.find({"ns":"shop.goods"}).toArray()> chunks.forEach(printjson);  #可以查看上一步得到的变量的值根据块的范围,找出可能的特大块> use dbName> db.runCommand({"datasize":"dbName.collName",     "keyPattern":{"date":1},     #片名     "min":chunks[0].min,     "max":chunks[0].max})(3) 特大块分发·关闭均衡器> sh.setBalancerState(false);·临时调高最大块的大小值> use config> db.settings.findOne({"_id":"chunksize"});> db.settings.save({"_id":"chunksize","value":1024});·使用moveChunk命令移动特大块> sh.moveChunk("test.users",{"user_id":NumberLong("223439877780288900")},"spock");> db.adminCommand({"moveChunk":"dbName.collName",     "find":{"date":new Date("10/03/2015")},     "to":"shard0002",     "secondary"Throttle:true   #要求迁移过程间歇进行,以免影响性能     })·使用splitChunk命令对from分片剩余的块进行拆分(实现from分片数目和其他分片的块均衡)·修改块大小> use config> db.settings.findOne({"_id":"chunksize"});> db.settings.save({"_id":"chunksize","value":32});·启用均很器> sh.setBalancerState(true)(4) 防止特大块出现细化片键的粒度,尽可能保证每个文档都有唯一的片键。9.手动刷新配置如果mongos无法从配置服务器获取配置信息,可以手动刷新> db.adminCommand({"flushRouterConfig":1});

 

 

转载地址:http://ozkio.baihongyu.com/

你可能感兴趣的文章
viewpage滑动查看图片并再有缩略图预览
查看>>
linux统计多个文件大小总和
查看>>
java基础-Eclipse开发工具介绍
查看>>
JS常见的字符串操作
查看>>
洛谷P1069 细胞分裂 数学
查看>>
JAVA中的编码分析
查看>>
查看源代码Source not found及在eclipse中配置jdk的src.zip源代码
查看>>
document.all用法
查看>>
uniGUI试用笔记(二)
查看>>
HOG特征-理解篇
查看>>
Microsoft.AlphaImageLoader滤镜解说
查看>>
extjs_02_grid(显示本地数据,显示跨域数据)
查看>>
超过响应缓冲区限制
查看>>
ubuntu 下安装 matplotlib
查看>>
webservice的几个简单概念
查看>>
underscore 1.7.0 api
查看>>
C# CheckedListBox控件的使用方法
查看>>
spring Transaction Management --官方
查看>>
iOS开发-清理缓存功能的实现
查看>>
IS_ERR、PTR_ERR、ERR_PTR
查看>>