我是吉米哥
(Ti D Ber Xb8 Bmv G4)
1
【 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这块的机制是怎么样的?
我是吉米哥
(Ti D Ber Xb8 Bmv G4)
4
这里的场景是3份副本,pd检测会自动在其他node上创建吗?
如果自动创建,node2又活过来了,这时怎么办?
lemonade010
(Ti D Ber Sd Dr Zqk O)
6
没有人工介入时,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 个赞
小龙虾爱大龙虾
(Minghao Ren)
7
是的,PD 会在一段时间后自动补副本,由 max-store-down-time 控制
过段时间 node2 活过来后,会发现自己已是落后版本,自己删除自己的 region
2 个赞
Kongdom
(Kongdom)
9
我一直以为只会正常提供服务,不会自动补副本,除非人工介入。
学习了,之前还真没有研究过max-store-down-time参数
1 个赞