raft log 是用于tikv 各个实例之间做数据同步的,举个不恰当的比喻就像的mysql的binlog 做主从同步,而wal 日志是tikv的存储引擎rocksdb 具有的,这一点类似于mysql的redo log,wal是在rocksdb写入的时候的事务日志,
wal是保证事务持久性的一个重要手段,相当于oracle/mysql中的redo log。事务的写操作一定是先持久化到wal,再异步将脏数据刷到磁盘上的。如果数据库异常宕机,则可利用wal恢复数据。 每个tikv有两个rocksdb实例,一个是存raft log的,一个是存真正数据的,分别是:rocksdb raft和rocksdb db这俩实例 , 然后写rocksdb db这个rocksdb实例的时候是先写wal,然后写memtable;写raft log到rocksdb raft实例的时候,也是先写wal,然后写memtable的! raft log是raft一致性协议中进行数据复制的日志,也是保证CAP理论中一致性的手段。当事务在leader副本上发起commit时,事务的写操作会被封装成raft log entry,复制到多数派节点并进行append和apply后,commit操作才能成功返回。
ticdc是直接从tikv上读取的kv change log,不是raft log
kv change log:就是tikv中的kv多版本数据,这就是为啥ticdc增量读取的和gc_life_time设置的时长有关系,ticdc的 --start-ts
一定要在gc_life_time保护期间内