tidb 是如何处理节点故障和数据迁移的

tidb 是如何处理节点故障和数据迁移的呢,比如有多个tikv 和 PD,节点,当某个节点故障后,tidb 内部是如何处理而又不影响业务的呢,应该也是有一套流程的吧,

TiDB 的高可用性依赖于以下几个关键机制:

  • Raft 协议数据副本保证了数据在 TiKV 节点故障时的高可用性和一致性。
  • PD 负责故障检测和数据副本的重新调度。
  • TiKV 的自动副本切换和数据迁移保证了节点故障后的快速恢复。
  • TiDB 的无状态设计确保 SQL 层不受存储层故障的影响。

TiDB 在节点故障后能够实现 自动故障转移自动数据迁移,保证在大多数故障场景下不影响业务的正常运行。

1 个赞

pd多个节点数据一样,故障后自动切换就行。tikv默认3副本,1个副本故障后只需要自动切换leader就可以,没有所谓的数据迁移。

你可以阅读下这个文章 https://docs.pingcap.com/zh/tidb/stable/pd-scheduling-best-practices#pd-调度策略最佳实践

raft协议多副本都有个leader节点负责读写,leader出故障了后等待时间超时(tikv是默认10秒)就开始选新的leader承载业务了

Tidb 具有自动切换和容错恢复机制,可以处理节点故障和数据迁移,
如果一个节点故障,Tidb 会通过raft 协议选举出新的leader节点,以保证系统的可用性,此时系统能正常提供服务,当有新节点加入集群时,Tidb会进行数据自动迁移,使得数据均衡分布,同时也提供高可用,数据迁移是将数据从一个节点复制到别一个节点,tidb会通过数据的负载情况,节点的状态,来判断是否需要进行数据迁移,当然也可以通过手动的方式去迁移数据

1 个赞
  1. 当某个节点故障后,假设里面有100个region数据,10个是leader 90个是副本,PD获取到该KV节点故障无法连通,10个leader对应的region立马找另外两个副本所在的kv去让其中1个变为leader,不影响业务使用。然后这个100个丢失的region在其他可用的kv节点进行复制生成1个副本。保证有1个leader2个副本
    2.多个PD,只有1个是leader正常工作,其他两个只是同步PD -leader的数据。保证PD保留的数据一致。
    3.这里面没有涉及到数据迁移,只有数据复制重新生成。扩容、缩容,是可以有数据迁移的。

感觉关键就是【多个】,一个倒下了,另外一个顶上。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。