TIKV扩容之刨坑填坑
01
背景
某tidb集群收到告警,TIKV 节点磁盘使用率85%以上,联系业务无法快速删除数据,于是想到扩容TIKV 节点,原先TIKV 节点机器都是6TB的硬盘,目前只有3TB的机器可扩,也担心region 均衡后会不会打满3TB的盘,PD 调度策略来看应该是会根据不同存储机器的资源配置和使用情况进行打分,region balance 优先根据leader score 和region score 往分低的机器均衡数据来让不同节点机器的数据处于一种均衡状态,但是PD 有时候也不是智能的,会出现偏差,导致某个节点磁盘打满也未可知,这时候就需要人为干预了,我就遇到了在不同存储节点扩容tikv导致小存储容量节点磁盘差点打满的情况,所以一般建议优先相同存储容量的盘进行扩容。
02
集群环境
Tidb:5节点
PD:3节点
TIKV:10节点 6TB 硬盘
集群总量:45TB ,每个TIKV 4.5TB
03
实施分析过程
由于业务不断增长,整个集群使用率接近80%,业务无法删除数据,于是决定扩容tikv节点,没有6TB的大盘机器,所以扩容了1个3TB的TIKV节点,可以考虑调整 PD 调度参数 region-schedule-limit 以及 leader-schedule-limit 来控制调度速度,调大可加快均衡速度,但是对业务会产生一定影响,过小速度会慢点,不着急的话默认值就行。
扩容TIKV
tiup cluster scale-out <cluster-name> scale-out.yaml
扩容完成后,经过一天一夜,收到告警,新扩容的机器磁盘已经90%,并基本维持在这个量级,比较纳闷,难道是错怪PD了,可能PD有参数限制智能使用磁盘的90%就不往该节点均衡数据了。
查阅官方文档发现下面参数low-space-ratio,确实是可以设置每个节点tikv的磁盘最大使用率。
确实是错怪PD了,以为它调度策略出现了偏差,回过头来看这个参数不能针对某个节点进行设置,生效的是所有节点,因为该集群6TB盘使用率在80%左右,所以也不好设置低于80%的参数,对我来说意义不大了,那就得需要寻找其它策略去均衡迁移数据了。
查看PD 监控
Store Region score 差不多是6TB 盘的一半左右,那三个163w的是相隔1天扩容的3个节点,看的出score 更低。
这里leader size 显示大小和原先6TB 盘接近,显示超过本身3TB 盘大小。
Store leader count 显示大小和原先存在的6TB TIKV 节点一样大。
显示Store Region size 是6.89TB ,实际硬盘使用在2.7TB 左右,为啥差距这么大呢?
监控指标store region zize 和 leader region size 大小取值的计算方式,由于多版本和 TiKV会压缩数据导致实际落盘存储大小和监控显示指标差距比较大,当超过500GB 数据采用zstd高压缩方式,压缩比大约3倍。
摘录 tidb-in-action的一段 :
至此就明白了上面监控数值显示大小和实际硬盘存储大小区别了,数据写入首先写入到rocksdb,然后由rocksdb进行落盘操作的。
Store leader score 分数已和原先的Tikv 节点近似,说明store leader 已均衡,但是region score 还偏低,还会持续有其它节点数据balance 过来,于是开始调整PD region_weight,leader_weight 参数来控制每个tikv 节点的分数,比如分别调整为0.5。
pd-ctl -i-u http://ip:2379
》store
》
》store weight 42607484 0.5 0.5
官方文档也给出说明了,因为新扩容磁盘容量大约为旧TIKV 节点的一半,所以我暂时通过调整权重来让新扩容的节点来存储旧集群数据量的一半。
调整后过12小时后再看,发现磁盘使用率已经降低到70%左右,说明参数起作用了,再逐步把region 转移到其它机器上。
04
总结
日常运维中还需要加强对Tidb 各个组件内部调度原理的学习,仔细研读官方文档,不然出事难免慌张,不知所措,感谢PingCap提供asktug 这个平台让我们可以搜索到很多实践运维案例,少走很多弯路。
TIKV扩容之刨坑填坑 相关推荐
- Spark踩坑填坑-聚合函数-序列化异常
Spark踩坑填坑-聚合函数-序列化异常 一.Spark聚合函数特殊场景 二.spark sql group by 三.Spark Caused by: java.io.NotSerializable ...
- [iOS]贝聊 IAP 实战之见坑填坑
大家好,我是**贝聊科技** 的 iOS 工程师 @NewPan. 这次为大家带来我司 IAP 的实现过程详解,鉴于支付功能的重要性以及复杂性,文章会很长,而且支付验证的细节也关系重大,所以这个主题会 ...
- Pyinstaller 详解多种打包过程(去坑,填坑)。
前言 本篇文章,详细介绍pyinstaller多种打包过程.去坑,填坑. 一.安装Pyinstaller 1)使用下面的命令即可安装(win10) pip install pyinstaller 二. ...
- js promises 踩坑 填坑 We have a problem with promises
We have a problem with promises promise 填坑 对于 promise return 与否,结果真的不一样哦. By: Nolan Lawson Published ...
- Cobalt Strike折腾踩坑填坑记录
文章目录 0X00 背景 0x01 基础原理 0x02 关于破戒 Exit暗桩 0x03 CDN+反代隐藏Teamserver Domain Fronting Proxy 0x04 DNS上线 一个未 ...
- weex css单位,Weex系列(7) ——踩坑填坑的总总
目录 使用weex已经一年半了,踩了很多坑,也流了很多泪填上,总结一波,希望对大家有所帮助. LaunchImage 这是今年来的第一个调整,需要把 iOS8.0 and Later勾上,不然iPho ...
- 微信小程序--多视频滑动播放(踩坑,填坑)
最近在做一个关于短视频的小程序,类似于微视和快手的小程序,但是在做的过程当中碰到了好多坑,于是得一步一步的去填这个坑.先来看看最后的实现效果 在做的过程中,想要实现多个视频无限滑动播放,并且在视频原生 ...
- 踩坑-填坑之 : vue打包上线,页面无法显示
出现了什么问题,什么现象? 根据从网上down下来的iview-admin框架进行后台管理系统开发,开发过程顺利,在部署到测试服务器时,打开页面一片空白;或是打开页面时只显示首页跳转到其他页面时显示空 ...
- 初遇Flarum_搭建安装的遇坑填坑过程
一.前言 Flarum是一款优雅简洁论坛软件.对PHP一点儿都不懂得我,开启了对Flarum的研究,过程中遇到了很多的坑,如今终于安装成功,写个小文章记录一下,供大家参考,初次接触php,如有错误,还 ...
最新文章
- 一次因网络引起的诡异GC问题,DBA该怎么做?
- NGUI_Texture
- 【金三银四跳槽季】Java工程师的面试之路,需要“解锁”哪些技术盲点?
- “约见“面试官系列之各系列目录汇总(建议学习收藏)
- 如何在验证集加噪声_图像去噪:如何去其糟粕,取其精华?
- Activity生命周期详解一
- 金格pdf打开服务器文件,金格插件解决方法.pdf
- 51单片机——LCD12864
- 跳一跳python源码下载_微信跳一跳辅助_微信跳一跳作弊外挂下载【脚本】-华军软件园...
- 银行电话精准营销的探索性分析并基于XGboost进行潜在客户预测建模
- 利用学信网免费激活PyCharm企业版(也适用所有其它JetBrains的IDE)
- etax导入账户不让勾选_勾选认证详解及常见问题分析
- 中国丹参市场经营模式与盈利预测报告(新版)2021-2026年
- ZZULI - 小新三连(二):小新在努力
- Mysql字段类型转换
- 如何做一个自己的开源聊天项目?(仿微信)
- 信创平台下构建rsync服务,同步与备份数据
- Java微信公众号开发微信网页授权之前端传递code方式获取用户信息
- 台达DVP ES系列PLC与台达MS300变频器通讯程序
- 在路径没问题的情况下,组件报错Component is not found
热门文章
- 浅析继承关系中的方法调用
- 推荐一款强大的SQL Internal 查看工具InternalsViewer
- IMPORTANT: BizTalk Server 2004 fixes for Windows XP SP2 and .NET FW 1.1 SP1
- 【数码管/定时器/中断】一个定时器控制数码管显示
- Python学习笔记之Windows下通过pip安装PyMySQL
- Redis集成到Maven工程(Jedis客户端)
- jdk/jre/jvm联系
- 从无到有整合SpringMVC-MyBatis项目(3):整合SpringMVC+Mybatis
- uni-app的列表搜索框_微信怎么搜索小程序?小程序能有什么用?
- 昆仑通态触摸屏如何把参数由触摸屏传递到PLC_昆仑通态MCGS触摸屏如何连接Modsim32进行组态仿真...