#备份与恢复
#目录
#介绍
提供基于存储的物理备份与恢复功能,确保数据安全。支持手动触发备份和恢复到新实例。
#操作步骤
CLI
Web Console
#配置备份存储
# 示例:为实例 'my-pg-instance' 配置备份存储
kubectl patch postgresql my-pg-instance -n my-namespace --type='merge' -p '
spec:
backup:
retainDay: 7
storage:
name: my-s3-config
bucket: my-backup-bucket
namespace: storage-namespace
'#创建备份
# 示例:为集群 'my-pg-cluster' 创建名为 'my-backup' 的备份
cat <<EOF | kubectl create -f -
apiVersion: middleware.alauda.io/v1
kind: PostgresBackup
metadata:
name: my-backup
namespace: my-namespace
spec:
cluster: my-pg-cluster
executeNode: my-pg-cluster-0 # 可选:指定执行备份的 pod
EOF#查看备份状态
kubectl get postgresbackup <backup-name> -n <namespace> -o yaml#恢复数据库
cat <<EOF | kubectl create -f -
apiVersion: middleware.alauda.io/v1
kind: PostgresRestore
metadata:
name: <restore-instance-name>
namespace: <namespace>
spec:
backupCluster:
name: <backup-pg-cluster-name>
uid: <backup-pg-cluster-uid>
storage:
name: <storage-name>
namespace: <storage-namespace>
bucket: <s3-bucket-name>
targetCluster: |
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
name: <new-instance-name>
namespace: <new-instance-namespace>
spec:
enableExporter: true
enablePgpool2: false
numberOfInstances: 2
postgresql:
version: "16"
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: "1"
memory: 2Gi
teamId: ACID
volume:
size: 20Gi
storageClass: sc-topolvm
timestamp: "2023-07-26T14:36:38+00:00" # 恢复的时间点
EOF- 点击左侧导航栏的 PostgreSQL
- 选择目标命名空间
- 从实例列表中选择目标实例
- 点击 备份与恢复 标签页
#配置备份存储
- 点击 配置存储 按钮
- 填写存储配置信息:
- 存储配置名称
- Bucket 名称
- 存储配置命名空间
- 备份保留天数
- 点击 保存
#创建备份
- 点击 创建备份 按钮
- 弹出窗口中包含:
- 实例名称(预填,如 pg-ha)
- 类型:基础备份(全量备份)
- 点击 创建 开始备份,或点击 取消 放弃
备份完成后,备份列表中将显示:
- ID:pg-ha-2025-03-25-092331
- 备份开始时间/结束时间:从 2025-03-25 17:23:32 到 2025-03-25 17:23:33
- 状态:已备份
#恢复数据库
-
点击 恢复数据库 按钮
-
加载恢复配置页面,包含:
- 原实例名称(预填,如 pg-ha)
- 恢复实例:恢复到新实例(推荐)
- 恢复方式:按时间点恢复
- 可恢复时间范围(例如:从 2025-03-25 17:23:34 到 2025-03-25 17:34:48 )
- 恢复时间点(可选择)
-
点击 下一步 继续
-
在基础配置页面:
- 输入名称(必须以字母开头,以字母或数字结尾,仅允许小写字母、数字和 "-",最长 30 个字符)
- 输入显示名称
- 选择部署位置
- 选择 PostgreSQL 版本(如 12、14、16)。版本 11 已弃用,未来版本将移除。
- 设置副本数量(如 3)
- 配置资源需求:
- CPU(如 1 核)
- 内存(如 2 Gi)
- 选择 StorageClass(如 c1-topolvmsc)
- 设置存储资源配额(如 50 Gi)
- 配置调度选项
-
点击 恢复 开始恢复流程
-
页面将跳转至新实例详情页
#备份状态说明
备份状态字段说明:
| 字段 | 说明 |
|---|---|
| backupName | 备份文件名 |
| clusterUid | 集群唯一标识符 |
| configBackupStorage | 备份存储配置 |
| executeNode | 执行备份的节点 |
| finishLsn | 备份结束时的 LSN 位置 |
| finishTime | 备份完成时间 |
| lastModified | 备份最后修改时间 |
| pgVersion | PostgreSQL 版本 |
| startLsn | 备份开始时的 LSN 位置 |
| startTime | 备份开始时间 |
| state | 备份状态 |
#注意事项
- 创建备份前必须完成备份存储配置。
- 恢复操作会创建一个新的 PostgreSQL 实例。
- 备份将在保留期结束后自动删除。
- 恢复过程中请勿对源集群执行写操作。
- 确保目标集群的存储类与源集群兼容。
- 备份前请确认有足够的存储空间。
- 定期测试恢复流程以确保备份有效性。
- 建议对敏感数据启用备份加密。