课程名称:【TiDB 4.0 PCTA 学习笔记】- 3.9.1 Data Replicas 1班 杨一

课程名称:课程版本 301 3.9.1 Data Replicas

学习时长:40min

课程收获:

理解 Raft 协议的基本概念,了解 TiDB 中副本操作流程

课程内容:

raft 协议

Raft是一个一致性协议.raft具有以下特性:

  1. Leader 选举。
  2. 成员变更 添加副本,删除副本,转移leader。
  3. 日志复制 将命令作为日志条目传递到其他节点。

Raft 运行过程中有强Leader,全权接收客户端的请求,并将命令作为日志条目传递到其他节点,在确认安全的时候将命令提交。出现故障时,会选举新的leader。

tikv 与 raft


TiKV基于Raft协议进行数据复制,每次数据变更都会记录到Raft日志中,由leader 节点对外提供读写请求,leader 将命令请求以Raft日志形式分发到follower节点,follower进行处理,当数据都安全且准确的同步至Raft group中的多个节点时,让后leader向客户端反馈已经完成。可以确保数据的安全性和一致性。如果某个节点长时间落后,leader 会发送snapshot给该节点,提高系统运行效率。

添加新的节点

现有4个TiKV节点,向该集群中添加一个新的节点E

初始化集群
增加节点E,系统发现新的节点E之后会调度一些region到其他节点,将整个集群的存储均匀化。

1 节点A迁移 的region1之前会进行leader选举,将region1的leader迁移到节点B的region1。然后在节点E上添加region1.


2 在节点E上添加region1之后,节点A 会删除region1,数据始终保持三个region 。


当发生节点缺失时比如宕机、网络中断等情况。在上面的案例中,如果节点E发生异常,超过默认30分钟无法正常加入集群,leader 会将从现有的节点中寻找一个合适的节点,重建节点E上的region副本。如果后来节点E重新加入到集群中,系统会自动判断副本的状态,并作出相对应的操作。