【 TiDB 使用环境】生产环境
【 TiDB 版本】tidb v4.0.11 tidb 4tidb 3pd 16tikv 三副本
【复现路径】
【遇到的问题:问题现象及影响】想咨询下数据三个副本,16个tikv节点,可以挂几个节点。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
1个,以副本数计算多数一致
3副本可以挂1个,5副本可以挂2个,挂多了数据库就停了,然后要做修复
一共16个tikv节点,假如挂了一个,另外扩容一个算不算修复了?
副本的维护是以 Region 为单位的,16 个 TiKV 节点,挂 1 个,导致部分 Region 丢失 1 个副本,如果这个坏的节点上不来,查过了 max_store_down_time (默认 30 分钟),会自动在其他节点上补充副本,保证数据还是 3 副本,所以就算不扩容也是会自动修复
不用扩容,16tikv挂一个少的副本会自动在其他tikv补齐,最后还是3副本
补齐完副本还能接着挂,前提是挂完后剩余tikv >=2
挂一个tikv,自动会重新负载补齐三副本,然后副本又是一致状态了
挂一个,超时自动补齐
老哥,是感觉16个tikv应该更健壮一些是吧?想着挂5台没问题?
那可以这样做:
给16个tikv分组,分成3组,这样的话,任意一组的tikv只有1副本数据,这一组的机器全部挂掉集群都是健康的。
分组建议参考机架分。
配置太好了
对于 16 个 TiKV 节点的集群,如果每个节点都存储一部分数据副本,理论上可以容忍几个节点故障而不影响数据的可用性。具体来说:
- 如果有 3 个副本,可以容忍 1 个节点故障(因为还有 2 个副本可用)。
- 如果有 4 个或更多的副本,可以容忍的节点故障数量会增加。
3副本,可以允许同时挂掉一个副本;5副本,可以允许同时挂掉两个副本;这个跟tikv的数量没有直接关系,跟tikv的label有直接关系。咱们有16个tikv,3副本,如果label划分的是az1: 5个tikv,az2 :5个tikv,az3: 6个tikv,假如az1的5台机器全挂掉,对整个集群来说还是可用的,因为还有2个完整副本是正常的;假如az1挂掉1台tikv,az2挂掉1台tikv,这样对整个集群来说,有部分数据的副本只有1个,此时数据就是不正常的。
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。