课程名称:【TiDB 4.0 PCTA 学习笔记】- 3.9.1 Data Replicas (数据复制)
学习时长:15m
课程收获:
了解Raft 协议,了解 TiDB 数据复制流程
课程内容:
一、Raft协议原理
分布式数据库 一般通过数据副本复制来保证数据不丢失。
raft 协议是一个一致性协议,具有leader选举、成员变更(添加副本、删除副本、转移leader等操作)、日志复制等功能。
在整个Raft体系中,由一个强leader负责接收客户端的请求命令,并将命令作为日志条目复制到其他服务器。在确认安全的时候,将日志命令提交执行。当leader故障时,会选举产生一个新的leader。
不同于paxos,Raft协议中 leader选举和所有的决定由leader来处理,这两部分是相互独立的。
数据的读写由leader对外提供,对leader的操作形成raft log,分发到follow节点。
follow节点根据日志跟进处理。当确认大多数节点已经完成raft log的应用后,向客户端反馈操作完成。
如果有一个节点长时间落后特别多,leader直接发送Snapshot的方式,基于整个镜像进行恢复,而不再是用raft log一条一条的跟进,提升整体运行效率。
二、TiDB的副本工作流程
初始化4个节点
增加节点E,需要调度一些region过去,将整个集群的存储均匀化。
节点A 的region1 进行leader选举,迁移到节点B
在节点E 创建region1
删除节点A 的 region1 ,希望数据始终保持三region 。
当发生节点缺失时,如宕机、网络中断等情况。
如果节点E 会在默认30分钟无法正常加入集群,
leader 会将从现有的节点中寻找一个合适的节点,重建节点E上的region副本。