备份与恢复

目录

介绍

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

操作步骤

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: "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. 建议对敏感数据启用备份加密。