以下工作流说明了用于克隆的步骤:
- 在停用 livenessProbe参数的情况下,在目标数据库集群上创建并应用DBCluster清单文件。
- 创建并配置 pgbackrest.conf文件以访问 Cloud Storage 备份。
- 使用 pgBackRest命令验证您是否可以访问源备份。
- 使用 pgBackRest命令将备份恢复到目标数据库集群。
准备工作
- 确保您有权访问存储源数据库集群备份的 Cloud Storage 存储桶的完整路径。此路径与您为源数据库集群创建 BackupPlan资源时使用的路径相同。
- 创建目标 AlloyDB Omni 数据库集群。如需详细了解如何在 Kubernetes 上安装 AlloyDB Omni,请参阅创建数据库集群。
- 确保您以 postgres用户身份登录数据库。
在目标数据库集群中创建数据库集群
在恢复过程完成之前,通过暂时停用 livenessProbe 参数来创建数据库集群。
- 创建 - DBCluster资源清单文件:- apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: primarySpec: availabilityOptions: livenessProbe: "Disabled" adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standard- 替换以下内容: - DB_CLUSTER_NAME:此数据库集群的名称,例如- my-db-cluster。
- ENCODED_PASSWORD:默认- postgres用户角色的数据库登录密码(以 base64 字符串编码),例如- Q2hhbmdlTWUxMjM=表示- ChangeMe123。
- CPU_COUNT:此数据库集群中的每个数据库实例可用的 CPU 数量。
- MEMORY_SIZE:此数据库集群的每个数据库实例的内存量。建议将此值设置为每个 CPU 8 千兆字节。例如,如果您之前在此清单中将- cpu设置为- 2,则建议将- memory设置为- 16Gi。
- DISK_SIZE:每个数据库实例的磁盘大小,例如- 10Gi。
 
- 应用清单文件: - kubectl apply -f DBCLUSTER_FILENAME- 替换以下内容: - DBCLUSTER_FILENAME:在上一步中创建的 DBCluster清单文件的名称。
 
- DBCLUSTER_FILENAME:在上一步中创建的 
使用 kubectl describe 命令验证数据库集群资源是否处于 READY 状态。
配置 pgBackRest 文件
配置 pgBackRest 文件,以便目标数据库集群能够访问源备份所在的 Cloud Storage 存储桶。
- 在目标数据库集群中,查找数据库集群 Pod 详细信息: - kubectl get pod -l "alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME, alloydbomni.internal.dbadmin.goog/task-type=database"- 响应包括集群数据库 Pod 的名称。 
- 登录 Pod: - kubectl exec -ti DATABASE_POD_NAME -- /bin/bash- 替换以下内容: - DATABASE_POD_NAME:上一步中的数据库集群 Pod 的名称。
 
- 在更新 - pgBackRest配置文件之前,请先停止 Pod:- supervisorctl.par stop postgres
- 创建 - pgBackRest配置文件以访问存储在 Cloud Storage 中的备份:- cat << EOF > /backup/pgbackrest.conf [db] pg1-path=/mnt/disks/pgsql/data pg1-socket-path=/tmp pg1-user=pgbackrest [global] log-path=/obs/pgbackrest log-level-file=info repo1-type=gcs repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH repo1-storage-ca-file=/scripts/ca-certificates.crt repo1-retention-full=9999999 repo1-gcs-key-type=auto- 替换以下内容: - GCS_SOURCE_BACKUP_BUCKET_NAME:您在为源数据库集群创建- BackupPlan资源清单文件时创建的 Cloud Storage 存储桶的名称。这不是存储桶的完整网址;请勿在存储桶名称前添加前缀- gs://。
- GCS_SOURCE_BACKUP_BUCKET_PATH:AlloyDB Omni 操作器在源数据库集群的 Cloud Storage 存储桶中写入备份的目录路径。路径必须是绝对路径,以- /开头。
 - 将 - repo1-gcs-key-type设置为- auto,以使用实例的服务账号。如需详细了解其他选项,请参阅 Cloud Storage 仓库密钥类型选项。
在目标数据库集群中验证源备份
运行 pgBackRest 命令,验证是否可以在目标数据库集群上访问源数据库集群备份。
pgbackrest --config-path=/backup --stanza=db --repo=1 info以下是示例响应:
  stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F
响应中的时间戳用于恢复完整备份或从恢复时段的时间点恢复。
在目标数据库集群中恢复备份
确定要恢复到的备份或时间点后,在目标数据库集群中运行 pgBackRest 命令。如需详细了解这些命令,请参阅恢复命令。
以下是一些 pgBackRest 恢复命令示例:
- 使用备份进行恢复 - pgbackrest --config-path=/backup --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
- 从某个时间点开始恢复 - pgbackrest --config-path=/backup --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
重启 Pod
恢复命令成功完成后,您可以启动 postgres 进程。
supervisorctl.par start postgrespostgres 进程启动后,您可以连接到主实例并运行查询,以验证数据是否已从备份恢复。如需了解详情,请参阅连接到 Kubernetes 上运行的 AlloyDB Omni。