跳到主要内容
版本:Nightly

概述

预写日志(WAL) 是 GreptimeDB 的关键组件之一,负责持久化记录每次数据修改操作,以确保内存中的数据在故障发生时不会丢失。GreptimeDB 支持两种 WAL 存储方案:

  • 本地 WAL: 使用嵌入式存储引擎 raft-engine ,直接集成在 Datanode 服务中。

  • Remote WAL: 使用 Apache Kafka 作为外部的 WAL 存储组件。

本地 WAL

优点

  • 低延迟: 本地 WAL 运行于 Datanode 进程内,避免了网络传输开销,提供更低的写入延迟。

  • 易于部署: 由于 WAL 与 Datanode 紧耦合,无需引入额外组件,部署和运维更加简便。

  • 零 RPO: 在云环境中部署 GreptimeDB 时,可以结合云存储服务(如 AWS EBS 或 GCP Persistent Disk)将 WAL 数据持久化存储,从而实现零恢复点目标 (RPO),即使发生故障也不会丢失任何已写入的数据。

缺点

  • 高 RTO: 由于 WAL 与 Datanode 紧密耦合,恢复时间目标 (RTO) 相对较高。在 Datanode 重启后,必须重放 WAL 以恢复最新数据,在此期间节点保持不可用。

  • 单点访问限制: 本地 WAL 与 Datanode 进程紧密耦合,仅支持单个消费者访问,限制了区域热备份和 Region Migration 等功能的实现。

Remote WAL

优点

  • 低 RTO: 通过将 WAL 与 Datanode 解耦,恢复时间目标 (RTO) 得以最小化。当 Datanode 崩溃时,Metasrv 会发起 Region Failover ,将受影响 Region 迁移至健康节点,无需本地重放 WAL。

  • 多消费者订阅:Remote WAL 支持多个消费者同时订阅 WAL 日志,实现 Region 热备和 Region Migration 等功能,提升系统的高可用性和灵活性。

缺点

  • 外部依赖: Remote WAL 依赖外部 Kafka 集群,增加了部署和运维复杂度。

  • 网络开销: WAL 数据需通过网络传输,需合理规划集群网络带宽,确保低延迟与高吞吐量,尤其在写入密集型负载下。

后续步骤

  • 如需配置本地 WAL 存储,请参阅本地 WAL

  • 想了解更多 Remote WAL 相关信息,请参阅 Remote WAL