MongoDB 分片管理(四)数据均衡 -- 特大快
1.1 特大快形成
如果用date字段作为片键,集合中date是一个日期字符串,如:year/month/day,也就是说,mongoDB一天创建一个块。因块内所有文档的片键一样,因此这些块是不可拆分的。如果块超出了config.settings中设置的最大块大小,那么均衡器就无法移动这个块了。
这种不可拆分和移动的块就叫做特大快,这种快相当难对付。

1.2 特大快的表现
出现特大快的表现之一是,某分片的大小增长速度要比其他分片快得多。也可使用sh.status()来检查
是否出现了特大快:特大快会存在一个jumbo属性。

可以使用dataSize命令检查块大小
1)首先用config.chunks集合,产看块范围
>use config
>var chunks= db.chunks.find({"ns":"acme.analytics"}).toArray()
2)根据这些块范围,找出可能的特大快
>use dbName

要小心,因为dataSize命令要扫描整个块的数据才知道块的大小。因此,要根据自己对数据了解,尽可能缩小
搜索范围:比如,特大快是特定日期出现的吗?如11月11日系统很繁忙。。。
1.3 分发特大快(修复特大快)
未修复由特大快引发的集群不均衡,就必须将特大快均衡的分发到其他分片上。
下面用from分片来代指特大快分片,以to分片来代指特大快即将迁至的分片。
注意:多个from分片,则需要对每个from分片重复下列步骤
1、关闭均衡器
>sh.setBalancerState(false)
2、MongoDB默认不允许移动大小超过最大快大小设定值的块。因此,需要调整最大快大小。单位MB
>use config
>db.setting.findOne({_id:chunksize})

>db.settings.save({"_id":"chunksize","value":10000})
3、使用moveChunk命令将特大快从from分片移至to分片
如担心迁移对性能影响,可使用secondaryThrootle选项,放慢迁移过程,减缓对系统性能影响
>db.adminCommand(
{"moveChunk":"acme.analytics",
"find":{"date":new Date("10/23/2012"},
"to":""shard0002,
"secondaryThrootle":true
}
)
4、使用splitChunk命令对from分片剩余的块进行拆分,这样可以增加from分片的块数,直到实现from分片
与其他分片块数均衡。
5、块大小修改回最初值
>db.settings.save({"_id":"chunksize","value":64})
6、启用均衡器
>sh.setBalancerState(true)
1.4 防止出现特大快
1、可修改片键、细化片键的粒度
2、尽可能保证每个文档都拥有唯一的片键值,或者至少不要出现某个片键值的数据超出最大块大小
设定值的情况
3、添加辅助字段作为片键
MongoDB 分片管理(四)数据均衡 -- 特大快的更多相关文章
- MongoDB 分片管理(三)服务器管理
MongoDB 分片管理(三)服务器管理
- MongoDB 分片管理(四)数据均衡
通常来说,MongoDB会自动处理数据均衡. 1.1 集群分片的块的均衡 注意,均衡器只使用块的数量,而非数据大小,来作为衡量分片间是否均衡的指标. 1.2 均衡器 1.执行所有数据库管理操作前,都应 ...
- MongoDB 分片管理
在MongoDB(版本 3.2.9)中,分片集群(sharded cluster)是一种水平扩展数据库系统性能的方法,能够将数据集分布式存储在不同的分片(shard)上,每个分片只保存数据集的一部分, ...
- MongoDB 分片管理(不定时更新)
背景: 通过上一篇的 MongoDB 分片的原理.搭建.应用 大致了解了MongoDB分片的安装和一些基本的使用情况,现在来说明下如何管理和优化MongoDB分片的使用. 知识点: 1) 分片的配置和 ...
- MongoDB 分片管理(一)检查集群状态
一.检查集群状态 1.1 使用sh.status()查看集群摘要信息 1.使用sh.status()可以查看分片信息.数据库信息.集合信息 sh.status() 如果数据块较多时,使用sh.stat ...
- MongoDB 分片管理(二)查看网络连接
1.1 查看连接统计 connPoolStats,查看mongos与mongod之间的连接信息,并可得知服务器 上打开的所有连接 1.2 限制连接数量
- 008.MongoDB分片群集概念及原理
一 MongoDB分片介绍 1.1 分片 Mongodb另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足 ...
- MongoDB分片介绍
本文简单介绍MongoDB的分片功能,对分片进行了概述,具体的功能详解,后续文章会陆续推出 分片是把数据分配到多个服务器上的一种方式,MongoDB使用分片实现大数据部署以及高吞吐操作. 大数据以及高 ...
- Mongodb 笔记07 分片、配置分片、选择片键、分片管理
分片 1. 分片(sharding)是指将数据拆分,将其分散存放在不同的机器上的过程.有时也用分区(partitioning)来表示这个概念.将数据分散到不同的机器上,不需要功能强大的大型计算机就可以 ...
随机推荐
- sublime3 安装markdown插件
sublime3 安装markdown插件 第一步安装package control 自动安装package control 手动安装package control 安装具体的markdown相关的p ...
- Python 数据结构理解分享
摘要:分享学习Python数据结构的一些理解,主要包含序列(如列表和元组),映射(如字典)以及集合3中基本的数据结构,以及可变和不可变数据类型. Python 中的数据结构是根据某种方式将数据元素组合 ...
- WUSTOJ 1325: Distance(Java)坐标计算
题目链接:1325: Distance Description There is a battle field. It is a square with the side length 100 mil ...
- windows主机上ORACLE生成awr报告的步骤
oracle数据库是一个大型的关系型数据库,那么如果有一天装载数据库的主机由于大量的IO操作导致主机cpu荷载超过100%会使得主机卡顿或者对数据库连接或者进行数据库进行正常的IO操作都会产生影响,所 ...
- 动态script标签同步加载 ps:无打包编译,静态实现静态资源入口动态配置,无编译打包静态资源添加版本号
/**功能:创建动态标签加载css ,js文件,重点是js文件,利用onloading加递归实现动态标签的同步加载用法:在html文件body底部script内部声明并调用下列函数,obj中写要加载的 ...
- 2019牛客多校八 H. How Many Schemes (AC自动机,树链剖分)
大意: 给定树, 每条边有一个字符集合, 给定$m$个模式串, $q$个询问$(u,v)$, 对于路径$(u,v)$中的所有边, 每条边从对应字符集合中取一个字符, 得到一个串$s$, 求$s$至少包 ...
- python 实现 websocket
一.websocket概要: websocket是基于TCP传输层协议实现的一种标准协议(关于网络协议,可以看看文末的图片),用于在客户端和服务端双向传输数据 传统的客户端想要知道服务端处理进度有两个 ...
- 记录MindSphere On Cloud Foundry的一次尝试过程
试验背景: 开始时间:2019年12月11日 结束时间:2019年12月13日 自己编写一个后台程序,尝试推送到Cloud Foundry上,并开放从MindSphere以外访问的权限. 程序实现以下 ...
- ElementUI动态表格数据转换formatter
elementUI的表格初始化比较简单,声明prop值对应的字段名即可. 而在实际应用中,我们常常有这种需求:从服务器获取的数据并不是我们要显示的最终结果,涉及一些状态.类型.日期时间等的转换,这时候 ...
- iOS CALayer总结——图层几何
最近看了一下关于图层和动画的内容,所以写了一份总结,算是对这些内容的汇总吧,都是一些简单的基础知识,不知道大家都了不了解. 除了和用户的交互之外,图层的很多属性和视图基本上都是一样的,今天就先从CAL ...