tikv的sst文件与rocksdb raft与rocksdb kv关系

课程名称:课程版本(101)+ 课程名称

看了101课程,tikv章节,有些地方没有搞懂,自己接触TIDB不久,望各位大神指导如图下面两张图片



说一下自己理解
wal就是主leader刷写rocksdb raft先到磁盘,类似于mysql的redo,sst文件类似于脏数据刷盘,但是课程中说主leader的rocksdb raft还要apply成rocksdb kv,这个没有太懂,主leader的rocksdb raft传到follower节点apply成sst文件就行了,为什么还要在自己节点apply 成rocksdb kv,是不是rocksdb kv就是sst文件,请教一下各位大佬

首先你要知道,tikv是不往磁盘写数据的,数据入盘操作是通过RocksDB实现的,RocksDB 被用于存储数据和元数据。
而Raft是tidb实现数据一致的分布式一致性协议,用于确保 TiKV 集群中的数据一致性和可靠性。
而RocksDB KV 存储引擎是基于 RocksDB 构建的,用于存储 TiKV 的键值数据。
SST 文件是 RocksDB 存储数据的方式之一。持久化的数据都在该文件中,数据迁移备份可以使用sst文件进行操作

raftdb这个只是写的是日志持久化,然后才是apply这些raftlog到rockdb中持久化

那sst文件就是持久化的啊,那memrable也是刷写sst文件,这个为啥搞两次持久化

RocksDB那个我知道,我就是想问问sst文件是memtable刷写的,还是rocksdb raft apply成rocksdb kv的,如果只是memtable刷写的,那么rocksdb kv也是持久化数据,那么这个数据成两份了,除非rocksdb kv就是sst文件

应该是需要上传到pd然后告诉pd数据文件落盘了

不是很懂

memtable写入的应该是键值对,而真正的数据应该是sst文件储存的


详细的内容你可以参考官方文档https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview

嗯,rocksdb raft日志apply成rocksdb kv的过程,就是日志应用生成memtable,也就是脏页,然后再刷盘,形成sst文件,这个课程没有介绍太清楚

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