[转帖]TIKV扩容之刨坑填坑​

tikv,扩容,刨坑 · 浏览次数 : 0

小编点评

**文章知识点** - tidb 集群收到告警,TIKV 节点磁盘使用率85%以上。 - 扩容TIKV节点可以考虑调整PD 调度参数 region-schedule-limit 以及 leader-schedule-limit 来控制调度速度。 - 扩容完成后,经过一天一夜,收到告警,新扩容的机器磁盘已经90%,基本维持在这个量级。 - 监控指标store region zize 和 leader region size 大小取值的计算方式可能导致实际落盘存储大小和监控显示指标差距比较大。 - 调整PD region_weight,leader_weight 参数来控制每个tikv 节点的分数。 **文章建议** - 优先调整相同存储容量的盘进行扩容。 - 仔细研读官方文档,了解PD的调度原理。 - 监控指标store region zize 和 leader region size 大小取值的计算方式,并根据需要进行调整。

正文

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

84abf73282d0774de3a0caabbe388c52.png

tiup cluster scale-out <cluster-name> scale-out.yaml

扩容完成后,经过一天一夜,收到告警,新扩容的机器磁盘已经90%,并基本维持在这个量级,比较纳闷,难道是错怪PD了,可能PD有参数限制智能使用磁盘的90%就不往该节点均衡数据了。

3c5e42a0cab70e6caad420774e8f6e53.png

查阅官方文档发现下面参数low-space-ratio,确实是可以设置每个节点tikv的磁盘最大使用率。

94acc15702689f776313da54e58dd2b7.png

确实是错怪PD了,以为它调度策略出现了偏差,回过头来看这个参数不能针对某个节点进行设置,生效的是所有节点,因为该集群6TB盘使用率在80%左右,所以也不好设置低于80%的参数,对我来说意义不大了,那就得需要寻找其它策略去均衡迁移数据了。

查看PD 监控

1985097e0b764cefc897942e756b7bc9.png

Store Region score 差不多是6TB 盘的一半左右,那三个163w的是相隔1天扩容的3个节点,看的出score 更低。

7def816043e4e83815c1e236a487aaec.png

这里leader size 显示大小和原先6TB 盘接近,显示超过本身3TB 盘大小。

4c8f1d10bb4a8281b61fac38bfa99d3f.png

Store leader count 显示大小和原先存在的6TB TIKV 节点一样大。

7f2d8219b49a0f4a620a85e54966445c.png

显示Store Region size 是6.89TB ,实际硬盘使用在2.7TB 左右,为啥差距这么大呢?

监控指标store region zize 和 leader region size 大小取值的计算方式,由于多版本和 TiKV会压缩数据导致实际落盘存储大小和监控显示指标差距比较大,当超过500GB 数据采用zstd高压缩方式,压缩比大约3倍。

摘录 tidb-in-action的一段 :

20e787f7f223311feca6f1fa69c55dba.png

至此就明白了上面监控数值显示大小和实际硬盘存储大小区别了,数据写入首先写入到rocksdb,然后由rocksdb进行落盘操作的。

8aaafe594bf8f8597fbac990e7fe1e44.png

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

bdbab453d56121726e07305f4e70246e.png

 》store weight 42607484 0.5 0.5

32c08d5d513ff83e55697542e388195d.png

官方文档也给出说明了,因为新扩容磁盘容量大约为旧TIKV 节点的一半,所以我暂时通过调整权重来让新扩容的节点来存储旧集群数据量的一半。

8e111e51b1714f443152d22c33e73797.png

调整后过12小时后再看,发现磁盘使用率已经降低到70%左右,说明参数起作用了,再逐步把region 转移到其它机器上。

5ba58ffaaca8ec346385f415f073cb34.png

04

总结

日常运维中还需要加强对Tidb 各个组件内部调度原理的学习,仔细研读官方文档,不然出事难免慌张,不知所措,感谢PingCap提供asktug 这个平台让我们可以搜索到很多实践运维案例,少走很多弯路。

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览128199 人正在系统学习中

与[转帖]TIKV扩容之刨坑填坑​相似的内容:

[转帖]TIKV扩容之刨坑填坑​

01 背景 某tidb集群收到告警,TIKV 节点磁盘使用率85%以上,联系业务无法快速删除数据,于是想到扩容TIKV 节点,原先TIKV 节点机器都是6TB的硬盘,目前只有3TB的机器可扩,也担心region 均衡后会不会打满3TB的盘,PD 调度策略来看应该是会根据不同存储机器的资源配置和使用情

[转帖]tidb4.0.4使用tiup扩容TiKV 节点

https://blog.csdn.net/mchdba/article/details/108896766 环境:centos7、tidb4.0.4、tiup-v1.0.8 添加两个tikv节点 172.21.210.37-38 思路:初始化两台服务器、配置ssh互通——>编辑配置文件——>执行扩

[转帖]使用 TiUP 扩容缩容 TiDB 集群

https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup TiDB 集群可以在不中断线上服务的情况下进行扩容和缩容。 本文介绍如何使用 TiUP 扩容缩容集群中的 TiDB、TiKV、PD、TiCDC 或者 TiFlash 节点。如未

[转帖]使用 TiUP 扩容缩容 TiDB 集群

https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup TiDB 集群可以在不中断线上服务的情况下进行扩容和缩容。 本文介绍如何使用 TiUP 扩容缩容集群中的 TiDB、TiKV、PD、TiCDC 或者 TiFlash 节点。如未

[转帖]使用 TiUP 扩容缩容 TiDB 集群

https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup TiDB 集群可以在不中断线上服务的情况下进行扩容和缩容。 本文介绍如何使用 TiUP 扩容缩容集群中的 TiDB、TiKV、PD、TiCDC 或者 TiFlash 节点。如未

[转帖]TIDB - TIDB集群的扩容和缩容及TIUP指令说明

一、TIUP工具简介 前面介绍了使用TIUP搭建TIDB集群,本篇文章详细介绍下使用TIUP对集群进行扩容和缩容。 在面对双十一这种流量突峰的场景,我们平常的TIDB集群有可能承受不住,因此需要提前进行扩容,例如增加tidb-server,以增加TIDB的计算能力,增加tikv-server,增加T

[转帖]TiFlash 简介

overview TiFlash 是 TiDB HTAP 形态的关键组件,它是 TiKV 的列存扩展,在提供了良好的隔离性的同时,也兼顾了强一致性。列存副本通过 Raft Learner 协议异步复制,但是在读取的时候通过 Raft 校对索引配合 MVCC 的方式获得 Snapshot Isolat

[转帖]TiKV & TiDB相关笔记

https://www.jianshu.com/p/1141be233bb2 一、TiKV存储 简述 通过单机的 RocksDB,TiKV 可以将数据快速地存储在磁盘上;通过 Raft,将数据复制到多台机器上,以防单机失效。数据的写入是通过 Raft 这一层的接口写入,而不是直接写 RocksDB。

[转帖]TiKV集群搭建

https://www.cnblogs.com/luohaixian/p/15227788.html 1.准备环境 准备4台ubuntu 16.04虚拟机 部署规划: 节点类型 CPU 内存 存储 部署数量 所在节点IP TiKV 8 core 8 GB 200GB 3 10.10.10.2 10.

[转帖]TiKV读写流程浅析

https://www.cnblogs.com/luohaixian/p/15227838.html 1.TiKV框架图和模块说明 图1 TiKV整体架构图 1.1.各模块说明 PD Cluster:它是由多个PD节点组成的etcd集群,PD是具有“上帝视角”的管理组件,负责存储元数据和进行负载均衡