课程名称:3.9.1 数据复制
学习时长:15min
课程收获:Raft 协议的基本概念,TiDB 中副本操作流程
课程内容:
-
Raft协议
-
思考:如何保证单机故障而数据不丢失?
- 传统一般用raid来解决
- 分布式环境下,将数据复制到多个机器上
-
Raft是一个基于一致性的协议
-
Raft有以下重要特征
- Leader选举
- 成员变更(比如增加副本、删除副本、leader转移等)
- 日志复制
-
TiKV使用Raft来进行数据复制
- 每个数据变更会被记录为Raft log
- 通过Raft log复制,数据安全可靠地复制到Raft组的多个节点
- 根据Raft协议,数据被复制到大多数节点就表成功写入
-
-
TiDB中的数据副本
-
当我们在TiDB集群中增加一个节点,发生了什么?
-
初始状态
-
增加一个节点(scale-out)
- 1、region1的leader从节点A转移到节点B(重新选举)
- 2、在节点E上增加一个region1的副本
- 3、从节点A删除region1的副本
-
-
节点E发生故障下线
- 1、region1的leader在节点B上,正常提供服务
- 2、半个小时(默认)后,节点E没办法重新加入,集群会自动从A、B、C、D四个节点中寻找合适的节点,新建region1的一个副本
- 3、之后,节点E重新加入,集群判断其上region状态,从而决定如何操作
-