region丢失的副本会在其他节点自动重建吗

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】

假设有4个节点的TIKV。每个region有3个副本。

如果10:00的时候 TIKV node2关机,此时node2上面的region全部不可见,这些region会在其他节点自动重建吗?
比如图中node2上的region1不可见,是否会自动在node3重建一个新的。

假设10分钟后(10:10分)node2开机,那么此时node2上面的所有region会怎么处理?

mysql mgr集群如果节点丢失,可以通过binlog增量恢复或者整体克隆来使得节点重新加入进来。
不知道tidb这块的机制是怎么样的?

没有这么智能吧

这个问题,首先要看你配置的是几副本,你这个场景

  1. 如果配置的是4副本,那么由于只剩下三个tikv节点,无法调度
  2. 如果配置的是3副本,那么pd层的巡检会检测到这个region却少健康的副本,然后会添加

这里的场景是3份副本,pd检测会自动在其他node上创建吗?
如果自动创建,node2又活过来了,这时怎么办?

mark,好问题,等大佬解答

没有人工介入时,PD 处理 TiKV 节点故障的默认行为是,等待半小时之后(可通过 max-store-down-time 配置调整),将此节点设置为 Down 状态,并开始为涉及到的 Region 补充副本。

实践中,如果能确定这个节点的故障是不可恢复的,可以立即做下线处理,这样 PD 能尽快补齐副本,降低数据丢失的风险。与之相对,如果确定这个节点是能恢复的,但可能半小时之内来不及,则可以把 max-store-down-time 临时调整为比较大的值,这样能避免超时之后产生不必要的副本补充,造成资源浪费。

自 v5.2.0 起,TiKV 引入了慢节点检测机制。通过对 TiKV 中的请求进行采样,计算出一个范围在 1~100 的分数。当分数大于等于 80 时,该 TiKV 节点会被设置为 slow 状态。可以通过添加 evict-slow-store-scheduler 来针对慢节点进行对应的检测和调度。当检测到有且只有一个 TiKV 节点为慢节点,并且该 TiKV 的 slow score 到达限定值(默认 80)时,将节点上的 Leader 驱逐(其作用类似于 evict-leader-scheduler)。

3 个赞

是的,PD 会在一段时间后自动补副本,由 max-store-down-time 控制


过段时间 node2 活过来后,会发现自己已是落后版本,自己删除自己的 region

2 个赞


https://disksing.com/tikv-replica/

:flushed:我一直以为只会正常提供服务,不会自动补副本,除非人工介入。

谢谢大佬解答

学习了,之前还真没有研究过max-store-down-time参数

1 个赞