为什么要两个日志?分别的作用是什么?具体怎么看到?
作用不同。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恢复
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
以上请参考!谢谢!
好的,仔细看一看,非常感谢
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。