概述
预写日志(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。