TiDB的分布式ingest是否考虑过只有部分region导入的情况?是如何解决的?

最近在学习rocksdb的ingest的相关代码,想到tidb底层也用到了rocksdb 。想请教下,分布式情况下,是否可能存在多个副本中,只有部分副本导入数据的情况发生。
例如,在raft leader上,ingest sst文件成功了,sst文件已经加入到底层文件中。而在follower上,ingest由于某些原因失败了,数据没进去。这时候leader和follower上数据是不一致的。

raft 协议 就保证了 msg 从 leader 传递到 N 个 follower 之后,
N / 2 + 1 个 follower 回应了 leader msg commit (也就是多数派),然后 leader 才会 commit msg,同时进如下一个处理环节,如此以来就能保证 数据的一致性了


你的设想就完全跳过了 raft 协议,肯定不能保证一致了 :custard:

我还没读过tidb代码。tidb是通过raft来保证ingest数据一致吗?我的一个想法是,先生成sst文件发送到各副本上备用,然后发送一个ingest trigger消息给raft leader,等各副本apply这条消息,触发ingest操作。讨论是,在ingest的时候部分ingest成功,这个貌似raft无法保证吧。

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