1.TIDB PD 的架构
PD 是 TIDB 数据库的中心控制器,被称为整个集群的大脑。它在TIDB数据库集群中扮演多个角色,比如存储元数据
(主要是为TIDB SERVER 提供数据路由),分配全局ID,事务ID和全局时间戳TSO的生成,处理服务发现,收集集群
拓扑结构,数据分布和热点信息,并负责调度TIKV节点的数据。PD 还提供TIDB DASHBOARD的健康服务。
PD 本身至少由3个节点组成,PD通过集成etcd,支持自动故障转移,无需担心单点故障和数据丢失的问题。
PD 也是通过 etcd 的Raft协议保证了数据的强一致性,不用担心数据不一致。
建议部署奇数个PD节点。
PD集群中是由一个leader角色的节点对外提供无状态的服务,所有的操作都是被动触发,即使PD节点宕机,借助PD
的选举机制,新选出的PD Leader 角色节点也能立即对外服务,无需考虑中间状态。
2.PD 中概念
(1)store PD 中的store 指的是集群中的存储节点,也就是TIKV实例。store与tikv实例严格一一对应。即使在同一主机
甚至共享同一块磁盘来部署多个TIDB 实例,这些实例也会对应不同的store;
(2)region /peer/raft group;
每个region负责维护集群中一段连续数据,默认大约96M;每份数据会在不同的store中存储多个副本,默认3副本。
每个副本称为一个Peer;同一个region的多个副本通过 raft 协议进行数据同步,所以Peer也用来指代 raft
协议中的某个成员。TIKV使用 multi raft 模式来管理数据,即每个region都对饮一个独立运行的raft协议组。
也把这样的一个raft协议组叫做一个raft group;
(3)leader/follower/leaner
他们分别对应peer的三种角色,其中 leader 负责响应客户端的读写请求; follower 被动的从leader同步数据,
当leader失效时会进行选举产生新的leader,leaner 是一种特殊的角色,它只参与同步raft日志,而不参与投票。
(4)region split
TIKV集群中 region 不是一开始就划分好的,而是随着数据写入逐渐分裂生成的。分裂的过程被称为region split;
其机制是集群初始化时构建一个厨师region覆盖整个键空间,随后再运行过程中每当region数据达到一定量之后
就通过分裂产生新的region;
(5)pending /down
pending 和down 是 Peer 可能出现的两种特殊状态。其中 Pending表示 follower 或 leader 的RAFT 日志与
Leader 有较大的差距,Pending状态的follower无法被选举为leader.Down 是指leader 长时间没有收到
peer的消息,通常意味着对应的节点发生了宕机或者网络隔离。