容灾和备份
容灾
KaiwuDB 通过 WAL(Write-Ahead Logging,预写式日志)技术,在 VGroup(虚拟组)级别记录时序表的模式变更和数据变更,实现时序数据灾难恢复,确保时序数据的一致性与原子性。
WAL 工作机制
WAL 通过以下三个核心步骤保障数据安全:
- 预写日志:所有时序数据修改操作在执行前必须先写入 WAL 日志,确保即使系统异常退出也能完整恢复数据
- 定期检查点(Checkpoint):系统后台定期将内存中的数据写入磁盘以确保数据安全。默认执行间隔为 1 分钟,可通过
ts.wal.checkpoint_interval
参数调整 - 故障恢复:系统重启时自动检查上次关闭状态,重放未完成的 WAL 操作并回滚异常事务,保证数据完整性
WAL 文件管理
KaiwuDB 采用双文件轮转策略实现高效的 WAL 文件管理:
- current_file:当前活跃的 WAL 写入文件,文件大小根据系统负载和配置参数动态调整
- checkpoint_file:执行检查点时由 current_file 转换的临时文件,数据同步完成后自动删除
具体轮转流程如下:
- 正常运行时,所有 WAL 操作记录在 current_file 中
- 触发检查点时,当前 current_file 转换为 checkpoint_file
- 系统立即创建新的 current_file 继续接收 WAL 写入
- 数据同步完成后,checkpoint_file 被安全删除
WAL 配置
用户可通过以下参数调整 WAL 行为:
参数名称 | 描述 | 默认值 |
---|---|---|
ts.wal.wal_level | WAL(Write-Ahead Log)写入级别,控制数据持久化策略: - 0 (off ):关闭 WAL,重启时通过时序存储引擎接口恢复数据状态- 1 (sync ):日志实时写入磁盘并强制持久化,提供最高安全性,性能相对较低- 2 (flush ):日志写入文件系统缓冲区,在性能和安全性间取得平衡- 3 (byrl ):基于 Raft Log 保证数据一致性,WAL 仅负责元数据一致性 | 1 |
ts.wal.checkpoint_interval | 检查点执行间隔,控制时序数据从内存持久化到磁盘的频率 | 1m |
重要说明
- 支持从
2
(flush
) 或1
(sync
) 动态切换到0
(off
) /3
(byrl
),切换过程会产生短暂阻塞,阻塞时长取决于当前检查点的执行时间 - 实例级别的 DDL 操作不受
ts.wal.wal_level
影响,始终启用 WAL 并实时持久化
示例:
-- 设置 WAL 为同步模式,确保最高数据安全性
SET cluster setting ts.wal.wal_level = 1;
-- 调整检查点间隔为 5 分钟
SET cluster setting ts.wal.checkpoint_interval = '5m';
备份还原
备份
功能概述
备份是指将数据库中的用户数据和元数据复制到指定位置的过程,用于在数据丢失、损坏或系统故障时恢复数据。
KaiwuDB 的备份功能主要用于应对以下场景:
- 灾难恢复:硬件故障、软件崩溃、自然灾害等意外情况时,根据备份文件快速恢复系统可用性
- 版本回退:数据库升级、应用升级出错时,根据备份文件回退至稳定版本
- 数据保护:防止人为误操作导致的数据丢失
- 系统迁移:将数据从一个环境迁移到另一个环境
备份类型
KaiwuDB 支持对时序引擎、时序数据库和时序表进行全量备份:
- 时序引擎备份:备份时序引擎下所有时序数据库的完整数据,包括元数据、标签数据和指标数据
- 时序数据库备份:备份指定数据库下所有时序表的完整数据,包括元数据、标签数据和指标数据
- 时序表备份:备份指定表的完整数据,包括元数据、标签数据和指标数据
备份文件结构
KaiwuDB 备份文件根据备份对象的不同,生成相应的目录结构:
时序引擎备份
备份时序引擎时,KaiwuDB 将在指定路径下创建备份文件夹,内部结构为:
tsengine
目录存储引擎级别的元数据信息(metadata),下层按数据库级别组织目录,每个数据库目录包含其所属的表目录,各表目录存储相应的标签、指标备份文件。extern/ └── backup_ts └── tsengine ├── db1 │ ├── tb1 │ │ └── storage_metrics_tag │ └── tb2 │ └── storage_metrics_tag ├── db2 │ ├── tb1 │ │ └── storage_metrics_tag │ └── tb2 │ └── storage_metrics_tag └── metadata
时序数据库备份
备份时序数据库时,KaiwuDB 将在指定路径下创建备份文件夹,文件夹内部直接包含对应的数据库目录,存储数据库的元数据和所有表目录,每个表目录下包含标签、指标相关的备份文件。
extern/ └── backup_db1 └── db1 ├── tb1 │ └── storage_metrics_tag ├── tb2 │ └── storage_metrics_tag └── metadata
时序表备份
备份时序表时,KaiwuDB 将在指定路径下创建备份文件夹,文件夹内部直接包含对应的表目录,存储表级别元数据以及标签、指标相关的备份文件。
extern/ └── backup_tb1 └── tb1 ├── metadata └── storage_metrics_tag
备份操作
备份操作通过 BACKUP
SQL 语句执行,支持通过作业管理查看、暂停、恢复和取消备份任务。有关 BACKUP
SQL 语句的详细信息,参见备份管理。有关作业管理的详细信息,参见作业管理。
说明
- 备份范围说明:当前备份还原功能仅支持时序表、数据库和时序引擎,不支持关系数据以及权限、系统表等对象。
- 未来数据限制:执行备份时,时间戳大于本次备份开始时间的数据无法进行备份。
- 任务中断处理:暂停全量备份任务后,如需恢复执行,必须先手动清理目标文件夹中的已生成备份文件,否则恢复操作可能会失败。
还原
功能概述
还原是指将备份文件中的数据和元数据恢复到数据库系统中的过程,使目标对象的状态与备份时保持一致。还原功能是数据库灾难恢复和数据保护策略的核心组成部分。
KaiwuDB 的还原功能主要用于以下场景:
- 灾难恢复:在系统故障、数据损坏或丢失时,通过还原备份数据快速恢复业务连续性
- 数据迁移:将数据从一个环境迁移到另一个环境,如从测试环境迁移到生产环境
- 版本回退:当系统升级或变更出现问题时,回退到之前的稳定状态
- 测试环境搭建:使用生产数据备份快速搭建测试环境
- 数据分析:为数据分析和报表生成创建独立的数据副本
还原类型
KaiwuDB 支持对时序引擎、时序数据库和时序表进行全量还原:
- 时序引擎还原:还原时序引擎下所有时序数据库的完整数据,包括元数据、标签数据和指标数据
- 时序数据库还原:还原指定数据库下所有时序表的完整数据,包括元数据、标签数据和指标数据
- 时序表还原:还原指定表的完整数据,包括元数据、标签数据和指标数据
还原操作
备份操作通过 RESTORE
SQL 语句执行,支持通过作业管理查看、暂停、恢复和取消还原任务。有关 RESTORE
SQL 语句的详细信息,参见还原管理。有关作业管理的详细信息,参见作业管理。
说明
- 备份范围说明:当前还原功能仅支持时序表、数据库和时序引擎,不支持关系数据和权限、系统表等对象。
- 任务中断处理:暂停全量还原任务后,如需恢复执行,必须先手动清理目标文件夹中的已生成还原文件,否则恢复操作可能会失败。