备份与恢复
为 IBM Bob 本地版配置、管理和恢复 PostgreSQL 数据库备份,以保护应用数据并支持恢复场景。
IBM Bob 本地版使用基于 ConfigMap 的备份配置模型,将备份操作与 Bob 自定义资源(CR)分离。备份任务通过 Kubernetes CronJob 自动调度和管理,支持可配置的保留策略和存储设置。
PostgreSQL 备份会创建 IBM Bob 和 Keycloak 数据库的可恢复副本。这些备份可用于在故障后恢复数据、在集群之间迁移数据,或将数据库恢复到之前的已知良好状态。
IBM Bob 支持自动计划备份和手动备份执行。
主要功能
自动调度
备份通过 Kubernetes CronJob 自动执行。备份计划使用标准 cron 表达式定义,允许你根据运营和恢复需求配置备份频率。
自动保留管理
备份保留由系统自动管理,以帮助控制存储消耗。每次成功备份后,超过已配置保留限制的旧备份将被自动删除。默认情况下,系统每个集群保留最近七个备份。
多集群备份支持
单个备份配置可管理多个 PostgreSQL 集群的备份。Operator 会为每个已配置的集群创建并维护专用备份资源,从而实现跨部署的集中备份管理。
PostgreSQL 镜像自动检测
备份系统可自动检测并使用运行中数据库集群的 PostgreSQL 容器镜像。这无需手动指定镜像版本,并有助于确保备份任务与目标数据库环境之间的兼容性。
基于 ConfigMap 的配置
备份设置存储在专用的 ConfigMap 中,与 Bob 自定义资源(CR)分离。这种分离简化了运维管理,允许独立修改备份计划、存储设置和保留策略,而无需更改应用部署配置。
自动压缩
数据库转储在存储前自动使用 gzip 压缩。压缩可减少存储需求,并有助于在可用存储容量内优化备份保留。
备份元数据跟踪
每个备份都包含一个元数据文件,其中包含备份时间戳、数据库名称、主机、端口和备份大小等详细信息。这些信息有助于验证备份完整性、跟踪备份历史记录,以及识别正确的恢复备份。
备份包含的内容
数据库备份会捕获重建数据库环境所需的所有 PostgreSQL 数据库对象和数据。
备份内容包括:
- PostgreSQL 数据库(如已配置):
- Bob 数据库(
bob) — 主要应用数据库,包括用户账户和身份验证信息、项目和对话、代码分析结果以及应用专属配置和设置。 - Keycloak 数据库(
app) — 用于身份验证和身份管理的 Keycloak 数据库,包括用户凭证和个人信息、OAuth 和 OpenID Connect(OIDC)配置、realm 设置以及客户端和身份提供商配置。
- Bob 数据库(
- 数据库 schema — 重建数据库结构所需的所有对象,包括表、索引和约束;存储过程和函数;视图和触发器;以及序列和自定义类型。
- 数据库数据 — 备份过程使用
pg_dump创建完整的 PostgreSQL 数据库转储,捕获数据库表中存储的所有数据、所有行和记录,以及二进制大对象(BLOB)(如存在)。
备份不包含的内容
PostgreSQL 备份不会捕获 Kubernetes 资源或应用配置。
以下内容必须单独管理:
- ConfigMap
- Secret
- Deployment 和 Service
- Ingress 资源
- 应用日志
- 模型数据和嵌入
- 非数据库持久卷
备份架构
IBM Bob 使用 Kubernetes 原生资源创建和管理数据库备份。
| 组件 | 用途 |
|---|---|
| Bob 自定义资源 | 启用或暂停备份操作 |
| 备份 ConfigMap | 定义计划、存储、保留策略和目标数据库 |
| CronJob | 执行计划备份 |
| 持久卷声明 | 存储备份文件 |
| 备份脚本 | 创建备份并管理保留 |
备份流程遵循以下工作流:
Bob CR (enabled: true) → ConfigMap 发现 → Controller 协调 → CronJob 执行- Controller 发现带有
bob.ibm.com/backup-config: "true"标签的 ConfigMap。 - Controller 为每个已配置的集群创建 CronJob 和 PVC。
- CronJob 按计划执行,运行
pg_dump创建压缩的 SQL 转储。 - 备份脚本管理保留,自动删除旧备份。
- 每个备份都包含带有时间戳、大小和数据库信息的元数据文件。
启用备份后,Operator 会自动发现备份配置、创建所需资源,并按照已配置的频率调度备份任务。
备份文件结构
备份文件存储在专用持久卷声明(PVC)上。每个已配置的 PostgreSQL 集群都有自己的目录,其中包含备份文件和关联的元数据。
/backups/
├── bob-db/
│ ├── backup_bob_20260902_020000.sql.gz
│ └── backup_bob_20260902_020000.sql.gz.meta
└── bob-keycloak-db/
├── backup_app_20260902_020000.sql.gz
└── backup_app_20260902_020000.sql.gz.meta每个备份生成以下文件:
.sql.gz— 压缩的 SQL 转储(纯文本格式,gzip 压缩).sql.gz.meta— 包含时间戳、数据库名称、大小、主机和端口的元数据文件
恢复能力
IBM Bob 支持多种恢复场景,帮助你恢复数据、从故障中恢复以及在不同环境之间迁移数据库:
- 完整数据库恢复 — 从备份文件恢复整个 PostgreSQL 数据库。
- 时间点恢复 — 根据时间戳选择所需备份文件,将数据库恢复到特定备份实例。
- 跨集群迁移 — 将备份恢复到不同的 PostgreSQL 集群,实现环境之间的数据库迁移。