自动化集群快照
本文介绍如何在存算分离集群上实现集群快照的自动化以进行灾难恢复。
此功能从 v3.4.2 开始支持,并且仅在存算分离集群上可用。
概述
存算分离集群的灾难恢复的基本思想是确保完整的集群状态(包括数据和元数据)存储在对象存储中。这样,如果集群发生故障,只要数据和元数据保持完整,就可以从对象存储中恢复。此外,云提供商提供的备份和跨区域复制等功能可以用于实现远程恢复和跨区域灾难恢复。
在存算分离集群中,CN 状态(数据)存储在对象存储中,但 FE 状态(元数据)仍然是本地的。为了确保对象存储中拥有所有用于恢复的集群状态,StarRocks 现在支持在对象存储中自动化集群快照以保存数据和元数据。
工作流程

术语
-
集群快照
集群快照是指在某一时刻的集群状态的快照。它包含集群中的所有对象,如 catalogs、数据库、表、用户和权限、导入任务等。它不包括所有外部依赖对象,如 external catalog 的配置文件和本地 UDF JAR 包。
-
自动化集群快照
系统自动维护紧随最新集群状态的快照。在创建最新快照后,历史快照将被删除,始终只保留一个快照。目前,自动化集群快照的任务仅由系统触发。不支持手动创建快照。
-
集群恢复
从快照中恢复集群。
使用方法
启用自动化集群快照
自动化集群快照默认是禁用的。
使用以下语句启用此功能:
语法:
ADMIN SET AUTOMATED CLUSTER SNAPSHOT ON
[STORAGE VOLUME <storage_volume_name>]
参数:
storage_volume_name:指定用于存储快照的存储卷。如果未指定此参数,将使用默认存储卷。有关创建存储卷的详细信息,请参阅 CREATE STORAGE VOLUME。
每次 FE 在完成元数据检查点后创建新的元数据镜像时,它会自动创建一个快照。快照的名称由系统生成,格式为 automated_cluster_snapshot_{timestamp}。
元数据快照存储在 /{storage_volume_locations}/{service_id}/meta/image/automated_cluster_snapshot_timestamp 下。数据快照存储在与原始数据相同的位置。
FE 配置项 automated_cluster_snapshot_interval_seconds 控制快照自动化周期。默认值为 600 秒(10 分钟)。
禁用自动化集群快照
使用以下语句禁用自动化集群快照:
ADMIN SET AUTOMATED CLUSTER SNAPSHOT OFF
一旦禁用自动化集群快照,系统将自动清除历史快照。
查看集群快照
您可以查询视图 information_schema.cluster_snapshots 来查看最新的集群快照和尚未删除的快照。
SELECT * FROM information_schema.cluster_snapshots;
返回:
| 字段 | 描述 |
|---|---|
| snapshot_name | 快照的名称。 |
| snapshot_type | 快照的类型。目前仅支持 automated。 |
| created_time | 快照创建的时间。 |
| fe_journal_id | FE 日志的 ID。 |
| starmgr_journal_id | StarManager 日志的 ID。 |
| properties | 应用于尚未可用的功能。 |
| storage_volume | 存储快照的存储卷。 |
| storage_path | 存储快照的存储路径。 |
查看集群快照任务
您可以查询视图 information_schema.cluster_snapshot_jobs 来查看集群快照的任务信息。
SELECT * FROM information_schema.cluster_snapshot_jobs;
返回:
| 字段 | 描述 |
|---|---|
| snapshot_name | 快照的名称。 |
| job_id | 任务的 ID。 |
| created_time | 任务创建的时间。 |
| finished_time | 任务完成的时间。 |
| state | 任务的状态。有效值:INITIALIZING、SNAPSHOTING、FINISHED、EXPIRED |