备份恢复

功能介绍

提供基于存储的物理备份和恢复功能,保障数据安全。支持手动触发备份和恢复到新实例。

操作步骤

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 <备份名> -n <命名空> -o yaml

恢复数据库

cat <<EOF | kubectl create -f -
apiVersion: middleware.alauda.io/v1
kind: PostgresRestore
metadata:
  name: <恢复实例名称>
  namespace: <命名空间>
spec:
  backupCluster:
    name: <备份PG集群实例名>
    uid: <备份PG集群UID>
    storage:
      name: <存储名>
      namespace: <存储命名空间>
      bucket: <S3 bucket名>
  targetCluster: |
    apiVersion: acid.zalan.do/v1
    kind: postgresql
    metadata:
      name: <新群实例名称>
      namespace: <新集群实例名称>
    spec:
      enableExporter: true
      enablePgpool2: false
      numberOfInstances: 2
      postgresql:
        version: "14"
      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

备份状态说明

备份状态字段说明:

字段说明
backupName备份文件名称
clusterUid集群唯一标识
configBackupStorage备份存储配置
executeNode执行备份的节点
finishLsn备份结束的LSN位置
finishTime备份完成时间
lastModified备份最后修改时间
pgVersionPostgreSQL版本
startLsn备份开始的LSN位置
startTime备份开始时间
state备份状态

注意事项

  1. 备份存储配置需要在创建备份前完成
  2. 恢复操作会创建新的PostgreSQL实例
  3. 备份保留天数到期后会自动删除
  4. 恢复过程中请勿对源集群进行写操作
  5. 确保目标集群的存储类与源集群兼容
  6. 在启动备份前验证有足够的存储空间
  7. 定期测试恢复流程以确保备份有效性
  8. 对于敏感数据,考虑启用备份加密