概述
作为分布式数据库,GreptimeDB 提供 了不同的灾难恢复(DR)解决方案。
本文档包括以下内容:
- DR 中的基本概念
- GreptimeDB 中备份与恢复(BR)的部署架构。
- GreptimeDB 的 DR 解决方案。
- DR 解决方案的比较。
基本概念
- 恢复时间目标(RTO):指灾难发生后业务流程可以停止的最长时间,而不会对业务产生负面影响。
- 恢复点目标(RPO):指自上一个数据恢复点以来可接受的最大时间量,决定了上一个恢复点和服务中断之间可接受的数据丢失量。
下图说明了这两个概念:
- 预写式日志(WAL):持久记录每个数据修改,以确保数据的完整性和一致性。
GreptimeDB 存储引擎是一个典型的 LSM 树:
写入的数据首先持久化到 WAL,然后应用到内存中的 Memtable。 在特定条件下(例如超过内存阈值时), Memtable 将被刷新并持久化为 SSTable。 因此,WAL 和 SSTable 的备份恢复是 GreptimeDB 灾难恢复的关键。
- Region:表的连续段,也可以被视为某些关系数据库中的分区。请阅读表分片以获取更多详细信息。
组件架构
GreptimeDB
在深入了解具体的解决方案之前,让我们从灾难恢复的角度看一下 GreptimeDB 组件的架构:
GreptimeDB 基于存储计算分离的云原生架构设计:
- Frontend:数据插入和查询的服务层,将请求转发到 Datanode 并处理和合并 Datanode 的响应。
- Datanode:GreptimeDB 的存储层,是一个 LSM 存储引擎。Region 是在 Datanode 中存储和调度数据的基本单元。Region 是一个表分区,是一组数据行的集合。Region 中的数据保存在对象存储中(例如 AWS S3)。未刷新的 Memtable 数据被写入 WAL,并可以在灾难发生时恢复。
- WAL:持久化内存中未刷新的 Memtable 数据。当 Memtable 被刷新到 SSTable 文件时,WAL 将被截断。它可以是基于本地磁盘的(本地 WAL)或基于 Kafka 集群的(远程 WAL)。
- 对象存储:持久化 SSTable 数据和索引。
GreptimeDB 将数据存储在对象存储(如 AWS S3)或兼容的服务中,这些服务在年度范围内提供了 99.999999999% 的持久性和 99.99% 的可用性。像 S3 这样的服务提供了单区域或跨区域的复制,天然具备灾难恢复能力。
同时,WAL 组件是可插拔的,例如使用 Kafka 作为 WAL 服务以提供成熟的灾难恢复解决方案。
备份与恢复
备份与恢复(BR)工具可以在特定时间对数据库或表进行完整快照备份,并支持增量备份。 当集群遇到灾难时,你可以使用备份数据恢复集群。 一般来说,BR 是灾难恢复的最后手段。