日志问题,wal的日志和rocksDB里面的raft日志的区别与作用

为什么要两个日志?分别的作用是什么?具体怎么看到?

作用不同。wal 是保证数据持久化的,常见的数据库都有这个行为,它可以把数据的随机写入转为顺序写入,缩短提交时间。raft 日志是为了数据一致性,从 raft leader 发送到 follower 节点的“消息”。

现在的版本raft默认使用raft-engine了,分布式数据一致性,wal日志是rocksDB的日志

和mysql类似吧,控制好redo,undo,其实可以去掉binlog

麻烦再问一下,wal日志能用作数据恢复吗? raft只是为了数据同步吗?相比直接apply,好处是什么啊?raft日志也能用作数据恢复吗?

wal日志能用作数据恢复吗

数据库崩溃,启动后会自己应用,类比 oracle shutdown abort 后的启动过程

raft只是为了数据同步吗
raft 本身是一种数据一致性算法,建议 google 下可以更有助于理解

非常感谢,另外,不好意思,不是问raft只是为了同步,是问raft日志,然后raft日志也能用作恢复吗? 会永久存在rocksDB里面吗?

日志都是本地硬盘里面单独放得,你装好tidb到安装目录看就能看到了

我理解raft是为了保持多个节点数据一致性的,很可能机器掉电的时候wal写了,raft log还没写,还是要通过wal恢复

1 个赞

image
这个log?
还是


raftlog 是存在 sst文件里,还是这个log里?

WAL 是用于数据持久化,raft log 是 raft 协议,数据副本同步同步使用。我个人日常运维的问题排查都比较少接触这俩日志,不过 rocksdb.info 这个文件倒可能会检视一下,如果要类比,就有点类似 show Innodb engine status 里面的引擎状态信息、各个分层数据信息

tikv.log 是 tikv 节点实例的运行日志

001184.log 是 raftlog

要找对位置~

tivk.log是运行日志,001184.log 是raft log ,是append前的日志吗? append后到rocksdb里面,是不是也是sst文件格式保存的? 那wal的日志在哪里啊?

参考这个图:

RaftLog 因为后面 Cloud 的需求,变更为了轻量级的引擎:raft engine,更加适应云上的同步需求和场景要求。

但是可以统一参考这儿的配置:

wal-dir

  • WAL 存储目录,若未指定,WAL 将存储在数据目录。
  • 默认值:""

需要关注配置:rocksdb
https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#raftstore
https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#rocksdb
https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#raft-engine

以上请参考!谢谢!

1 个赞

好像明白了, 再帮忙确认一下 (版本是 v 8.2.0)


这个是 wal 日志

这个是 raft log
对吗?

:tada: :tada: :tada: :tada: :tada: 恭喜~

不同的 engine,作用是不一样的

具体参考这儿:
https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview

好的,仔细看一看,非常感谢

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