使用 RPM Orchestrator 备份和恢复数据

选择文档版本:

为了保护您的数据,AlloyDB Omni 使用声明式清单提供自动数据备份和恢复功能。AlloyDB Omni 编排器可与 alloydbctl 和 Ansible 搭配使用,以应用这些清单配置,并自动备份到 Cloud Storage、标准 Amazon S3 存储桶或符合 S3 标准的软件(例如 MinIO)。

如需启用 AlloyDB Omni 持续备份和恢复,您必须为每个数据库集群创建备份方案。系统会根据 BackupPlan 资源中定义的备份时间表进行备份。您可以使用 Backup 资源或恢复时段中的任意时间戳(精确到秒)进行恢复。

AlloyDB Omni 通过清单管理自动备份和恢复:

  • BackupPlan:每个数据库集群可以有一个或多个 BackupPlan 清单,这些清单在不同备份层级具有不同的配置和时间表。
  • Backup:根据 BackupPlan 清单启动完整备份、差分备份或增量备份。
  • Restore:使用特定备份或时间点启动数据库集群的原位恢复。

准备工作

在设置和配置备份方案之前,请确保您已做好以下准备:

  • 备份的存储位置:AlloyDB Omni 会将备份存储在以下存储选项之一中:

    • Cloud Storage:Cloud Storage 存储桶。如需了解如何创建存储桶,请参阅创建存储桶。
    • Amazon S3:Amazon S3 存储桶。如需了解如何创建 S3 存储桶,请参阅创建存储桶。
    • 符合 S3 标准的存储空间:符合 S3 标准的软件(例如 MinIO)中的存储桶。如需了解如何创建 MinIO 存储桶,请参阅 MinIO 文档。
  • 身份验证凭证:如果您的存储选项需要身份验证密钥(例如 Amazon S3、MinIO 或具有特定服务账号的 Cloud Storage),则必须先创建包含这些凭证的 Secret 资源,然后才能创建备份方案。如需查看相关说明,请参阅创建 Secret 资源以对存储空间进行身份验证。

创建 Secret 资源以验证存储空间

如果您使用的存储空间需要身份验证,则必须先创建 Secret 资源,然后才能创建备份方案。

为 Cloud Storage 创建 Secret 资源

  1. 创建服务账号以便向存储桶添加备份。
  2. 向存储桶中的服务账号授予 roles/storage.objectAdmin Identity and Access Management 角色。
  3. 生成 JSON 格式的服务账号密钥。
  4. 以 base64 格式对下载的 JSON 密钥文件的内容进行编码。运行 base64 -w 0 或确保编码文本是单独的一行连续文本。
  5. 创建 Secret 资源清单。data 部分中的键名称必须为 key.json。

    Secret:
      metadata:
        name: SECRET_NAME
      spec:
        type: Opaque
        data:
          key.json: "BASE64_ENCODED_JSON_KEY"
    

    替换以下内容:

    • SECRET_NAME:Secret 资源的名称。
    • BASE64_ENCODED_JSON_KEY:服务账号 JSON 密钥文件的 base64 编码内容。

为 S3 或 S3 兼容存储空间创建 Secret 资源

  1. 以 base64 格式对您的 S3 访问密钥 ID 进行编码。
  2. 以 base64 格式对 S3 私有访问密钥进行编码。
  3. 创建 Secret 资源清单。data 部分中的键名称必须是 access-key-id 和 access-key。

    Secret:
      metadata:
        name: SECRET_NAME
      spec:
        type: Opaque
        data:
          access-key-id: "BASE64_ENCODED_ACCESS_KEY_ID"
          access-key: "BASE64_ENCODED_SECRET_ACCESS_KEY"
    

    替换以下内容:

    • SECRET_NAME:Secret 资源的名称。
    • BASE64_ENCODED_ACCESS_KEY_ID:base64 编码的 S3 访问密钥 ID。
    • BASE64_ENCODED_SECRET_ACCESS_KEY:经过 base64 编码的 S3 私有访问密钥。

应用 Secret 资源

在应用 BackupPlan 清单之前,请先应用 Secret 资源清单。 您可以使用以下任一方法应用 Secret 资源清单:

alloydbctl

如需使用 alloydbctl 应用 Secret 资源清单,请运行以下命令:

alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "SECRET_MANIFEST"

执行以下变量替换操作:

  • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。
  • SECRET_MANIFEST:您创建的 Secret 资源清单的路径。

Ansible

如需使用 Ansible 应用 Secret 资源清单,请完成以下操作:

  1. 为 Secret 资源清单创建 playbook:

    - name: Create Secret
      hosts: localhost
      become: true
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.backup
    

    执行以下变量替换操作:

    • ANSIBLE_USER:Ansible 用于登录 AlloyDB Omni 节点的操作系统用户。
    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。
  2. 应用 Secret 资源清单:

    ansible-playbook SECRET_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
      -e resource_spec="SECRET_MANIFEST"

    执行以下变量替换操作:

    • SECRET_PLAYBOOK:您为 Secret 资源清单创建的 playbook 的路径。
    • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。
    • SECRET_MANIFEST:您创建的 Secret 资源清单的路径。

创建备份方案

  1. 使用适合您存储选项的格式创建 BackupPlan 清单:

    Cloud Storage

    gcsOptions 是必填字段。

    BackupPlan:
      metadata:
        name: BACKUP_PLAN_NAME
      spec:
        dbclusterRef: DBCLUSTER_NAME
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: BUCKET_NAME
            key: BUCKET_PATH
            secretRef:
              name: SECRET_NAME
        backupRetainDays: RETAIN_DAYS
        backupSchedules:
          full: "FULL_SCHEDULE"
          differential: "DIFF_SCHEDULE"
          incremental: "INC_SCHEDULE"
    

    执行以下变量替换操作:

    • BACKUP_PLAN_NAME:BackupPlan 清单的名称。例如 my-backup-plan-1。

    • DBCLUSTER_NAME:您在创建集群中定义的数据库集群的名称。

    • BUCKET_NAME:您创建的 Cloud Storage 存储桶的名称。

    • BUCKET_PATH:Cloud Storage 中备份应写入到的目录的路径。您必须提供以 / 开头的绝对路径。 例如 /backups。

    • SECRET_NAME (可选):存储身份验证密钥的 Secret 资源的名称。

    • RETAIN_DAYS(可选):在自动删除备份之前保留备份的天数。

    • FULL_SCHEDULE(可选):完整备份的 cron 计划表达式。例如 0 2 * * *。

    • DIFF_SCHEDULE(可选):差分备份的 cron 时间表表达式。例如 0 2 * * *。

    • INC_SCHEDULE(可选):增量备份的 cron 时间表表达式。例如 0 2 * * *。

    Amazon S3 或 S3 兼容

    s3Options 是必填字段。

    BackupPlan:
      metadata:
        name: BACKUP_PLAN_NAME
      spec:
        dbclusterRef: DBCLUSTER_NAME
        backupLocation:
          type: S3
          s3Options:
            bucket: BUCKET_NAME
            key: BUCKET_PATH
            endpoint: ENDPOINT_URL
            region: REGION
            secretRef:
              name: SECRET_NAME
        backupRetainDays: RETAIN_DAYS
        backupSchedules:
          full: "FULL_SCHEDULE"
          differential: "DIFF_SCHEDULE"
          incremental: "INC_SCHEDULE"
    

    执行以下变量替换操作:

    • BACKUP_PLAN_NAME:BackupPlan 清单的名称。例如 my-backup-plan-1。

    • DBCLUSTER_NAME:您在创建集群中定义的数据库集群的名称。

    • BUCKET_NAME:您创建的 S3 存储桶的名称。

    • BUCKET_PATH:S3 存储桶中备份应写入的目录的路径。您必须提供以 / 开头的绝对路径。例如 /backups。

    • ENDPOINT_URL:用于连接到符合 S3 标准的软件(例如 MinIO)的自定义端点网址。例如 http://minio.example.com:9000。对于 Amazon S3 存储桶,您无需提供任何端点网址。

    • REGION_(可选):存储桶的区域。在连接到标准 Amazon S3 存储桶或强制执行区域验证的 S3 兼容软件时,此参数为必需参数。

    • SECRET_NAME:对您之前创建的 Secret 资源的引用,其中包含您的 ACCESS_KEY_ID 和 SECRET_ACCESS_KEY。

    • RETAIN_DAYS(可选):在自动删除备份之前保留备份的天数。

    • FULL_SCHEDULE(可选):完整备份的 cron 计划表达式。例如 0 2 * * *。

    • DIFF_SCHEDULE(可选):差分备份的 cron 时间表表达式。例如 0 2 * * *。

    • INC_SCHEDULE(可选):增量备份的 cron 时间表表达式。例如 0 2 * * *。

  2. 使用以下任一方法应用备份方案:

    alloydbctl

    1. 应用 BackupPlan 资源:

      alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "BACKUP_PLAN_MANIFEST"

      执行以下变量替换操作:

      • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

      • BACKUP_PLAN_MANIFEST:您之前创建的 BackupPlan 清单的路径。

    2. 确认 BackupPlan 清单的状态字段 status.phase 为 Ready。如果清单文件尚未准备就绪,请等待其准备就绪:

      alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t BackupPlan -n BACKUP_PLAN_NAME -o yaml

    Ansible

    1. 为 BackupPlan 清单创建 playbook:

      - name: BACKUP_PLAN_PLAYBOOK_NAME
        hosts: localhost
        vars:
          ansible_user: ANSIBLE_USER
          ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
        roles:
          - role: google.alloydbomni_orchestrator.backup
      

      执行以下变量替换操作:

      • BACKUP_PLAN_PLAYBOOK_NAME:Ansible playbook 的名称。例如 My BackupPlan。 记下 playbook 的路径,因为下一步需要用到。

      • ANSIBLE_USER:Ansible 用于登录 AlloyDB Omni 节点的操作系统用户的名称。

      • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。

    2. 应用 BackupPlan 资源:

      ansible-playbook BACKUP_PLAN_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
        -e resource_spec="BACKUP_PLAN_MANIFEST"

      执行以下变量替换操作:

      • BACKUP_PLAN_PLAYBOOK:您之前为 BackupPlan 清单创建的 playbook 的路径。

      • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

      • BACKUP_PLAN_MANIFEST:您之前创建的 BackupPlan 清单的路径。

    3. 如果您还没有 status.yaml playbook,请创建一个。如需了解如何创建 playbook,请参阅查看状态和列出备份资源。

    4. 确认 BackupPlan 清单的状态字段 status.phase 是否为 Ready。如果清单文件尚未准备就绪,请等待其准备就绪:

      ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=BackupPlan \
        -e resource_name=BACKUP_PLAN_NAME

更新备份方案

如需更新备份方案以更改备份时间表、修改保留期限或暂停计划备份,请修改 BackupPlan 清单,然后重新应用该清单。

  1. 打开您在创建备份方案中创建的 BackupPlan 清单。

  2. 修改要更新的字段。

    • 如需更新备份时间表,请修改 backupSchedules 下的 cron 表达式。
    • 如需更新保留期限,请修改 backupRetainDays。
    • 如需暂停预定备份,请将 paused 字段添加到 spec 部分,并将其设置为 true。如需恢复备份,请将该字段设置为 false 或移除该字段。

    例如,以下示例将保留天数更新为 30,修改 full 和 differential 时间表,添加 incremental 时间表,并暂停备份方案:

    BackupPlan:
      metadata:
        name: BACKUP_PLAN_NAME
      spec:
        dbclusterRef: DBCLUSTER_NAME
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: BUCKET_NAME
            key: BUCKET_PATH
            secretRef:
              name: SECRET_NAME
        backupRetainDays: 30
        backupSchedules:
          full: "0 4 * * *"
          differential: "0 0 * * 0"
          incremental: "0 12 * * *"
        paused: true
    
  3. 使用以下任一方法应用更新后的备份方案:

    alloydbctl

    1. 应用 BackupPlan 资源:

      alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "BACKUP_PLAN_MANIFEST"

      执行以下变量替换操作:

      • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

      • BACKUP_PLAN_MANIFEST:您修改的 BackupPlan 清单的路径。

    2. 确认 BackupPlan 清单的状态字段 status.phase 为 Ready。如果清单文件尚未准备就绪,请等待其准备就绪:

      alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t BackupPlan -n BACKUP_PLAN_NAME -o yaml

    Ansible

    1. 使用您在创建备份方案中创建的 playbook 应用更新后的 BackupPlan 资源:

      ansible-playbook BACKUP_PLAN_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
        -e resource_spec="BACKUP_PLAN_MANIFEST"

      执行以下变量替换操作:

      • BACKUP_PLAN_PLAYBOOK:您为 BackupPlan 清单创建的 playbook 的路径。

      • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

      • BACKUP_PLAN_MANIFEST:您修改的 BackupPlan 清单的路径。

    2. 如果您还没有 status.yaml playbook,请创建一个。如需了解如何创建 playbook,请参阅查看状态和列出备份资源。

    3. 确认 BackupPlan 清单的状态字段 status.phase 为 Ready。如果清单尚未准备就绪,请等待其准备就绪后再进行验证:

      ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=BackupPlan \
        -e resource_name=BACKUP_PLAN_NAME

删除备份方案

如需删除备份方案,请使用以下任一方法:

alloydbctl

alloydbctl delete -d "DEPLOYMENT_SPEC_PATH" -t BackupPlan -n BACKUP_PLAN_NAME

执行以下变量替换操作:

  • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

  • BACKUP_PLAN_NAME:要删除的 BackupPlan 清单的名称。

Ansible

  1. 创建用于删除 BackupPlan 清单的 playbook。

    - name: BACKUP_PLAN_DELETE_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.delete
    

    执行以下变量替换操作:

    • BACKUP_PLAN_DELETE_PLAYBOOK_NAME: Ansible playbook 的名称。

    • ANSIBLE_USER:Ansible 用于登录 AlloyDB Omni 节点的操作系统用户。

    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。

  2. 运行 ansible-playbook 以删除 BackupPlan 清单。

    ansible-playbook BACKUP_PLAN_DELETE_PLAYBOOK_NAME -i "DEPLOYMENT_SPEC_PATH" -e resource_type=BackupPlan \
      -e resource_name=BACKUP_PLAN_NAME

    执行以下变量替换操作:

    • BACKUP_PLAN_DELETE_PLAYBOOK_NAME:您在上一步中创建的用于删除 BackupPlan 清单的 playbook 的路径。

    • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

    • BACKUP_PLAN_NAME:要删除的 BackupPlan 清单的名称。

创建备份

如需创建并启动备份,请使用以下任一方法:

alloydbctl

  1. 使用以下格式创建 Backup 清单:

    Backup:
      metadata:
        name: BACKUP_NAME
      spec:
        backupPlanRef: BACKUP_PLAN_NAME
        dbclusterRef: DBCLUSTER_NAME
        type: full
    

    执行以下变量替换操作:

    • BACKUP_NAME:Backup 清单的名称。例如 my-backup-1。

    • BACKUP_PLAN_NAME:您之前创建的 BackupPlan 清单的名称。例如 my-backup-plan-1。

    • DBCLUSTER_NAME:您在创建集群中定义的数据库集群的名称。

    • type(可选):备份执行类型,可设置为 full、diff 或 incr。默认值为 full。

  2. 应用 Backup 清单:

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "BACKUP_MANIFEST"

    执行以下变量替换操作:

    • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

    • BACKUP_MANIFEST:您之前创建的 Backup 清单的路径。

  3. 确认 Backup 清单的状态字段 status.phase 为 Succeeded。如果清单未成功,请等待直至成功:

    alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t Backup -n BACKUP_NAME -o yaml
  4. 通过验证 /backup/db 文件夹是否存在,确认备份文件是否位于您的存储桶中。

Ansible

  1. 使用以下格式创建 Backup 清单:

    Backup:
      metadata:
        name: BACKUP_NAME
      spec:
        backupPlanRef: BACKUP_PLAN_NAME
        dbclusterRef: DBCLUSTER_NAME
        type: full
    

    执行以下变量替换操作:

    • BACKUP_NAME:Backup 清单的名称。例如 my-backup-1。

    • BACKUP_PLAN_NAME:您之前创建的 BackupPlan 清单的名称。例如 my-backup-plan-1。

    • DBCLUSTER_NAME:您在创建集群中定义的数据库集群的名称。

    • type(可选):备份执行类型,可设置为 full、diff 或 incr。默认值为 full。

  2. 为 Backup 清单创建 playbook:

    - name: BACKUP_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.backup
    

    执行以下变量替换操作:

    • BACKUP_PLAYBOOK_NAME:Ansible playbook 的名称。例如 My Backup。

    • ANSIBLE_USER:Ansible 用于登录 AlloyDB Omni 节点的操作系统用户的名称。

    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。

  3. 应用 Backup 清单:

    ansible-playbook BACKUP_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
      -e resource_spec="BACKUP_MANIFEST"

    执行以下变量替换操作:

    • BACKUP_PLAYBOOK:您之前为创建的 Backup 清单创建的 playbook 的路径。

    • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

    • BACKUP_MANIFEST:您之前创建的 Backup 清单的路径。

  4. 如果您还没有 status.yaml playbook,请创建一个。如需了解如何创建 playbook,请参阅查看状态和列出备份资源。

  5. 确认 Backup 清单的状态字段 status.phase 为 Succeeded。如果清单尚未成功,请等待其成功后再进行验证:

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=Backup \
      -e resource_name=BACKUP_NAME
  6. 通过验证 /backup/db 文件夹是否存在,确认备份文件在存储桶中可用。

删除备份

如需删除备份,请运行以下命令之一:

alloydbctl

alloydbctl delete -d "DEPLOYMENT_SPEC_PATH" -t Backup -n BACKUP_NAME

执行以下变量替换操作:

  • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

  • BACKUP_NAME:要删除的 Backup 清单的名称。

Ansible

  1. 创建一个用于删除 Backup 清单的 playbook。

    - name: BACKUP_DELETE_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.delete
    

    执行以下变量替换操作:

    • BACKUP_DELETE_PLAYBOOK_NAME: Ansible playbook 的名称。

    • ANSIBLE_USER:Ansible 用于登录 AlloyDB Omni 节点的操作系统用户。

    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。

  2. 运行 ansible-playbook 以删除 Backup 清单。

    ansible-playbook BACKUP_DELETE_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" -e resource_type=Backup \
      -e resource_name=BACKUP_NAME

    执行以下变量替换操作:

    • BACKUP_DELETE_PLAYBOOK:您在上一步中为删除 Backup 清单而创建的 playbook 的路径。

    • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

    • BACKUP_NAME:要删除的 Backup 清单的名称。

从备份或时间点 (PITR) 恢复

如需从备份恢复数据,请应用 Restore 清单。RPM 编排器会执行就地恢复,这会直接修改目标数据库集群,而无需启动克隆的集群或手动执行脚本。

如需从备份进行恢复,请使用以下任一方法:

alloydbctl

  1. 使用以下格式创建 Restore 清单:

    • 如需从特定命名备份进行恢复,请运行以下命令:
    Restore:
      metadata:
        name: RESTORE_NAME
      spec:
        sourceDBCluster: DBCLUSTER_NAME
        backup: BACKUP_NAME
    
    • 如需执行时间点恢复 (PITR),请执行以下操作:

      Restore:
        metadata:
          name: RESTORE_NAME
        spec:
          sourceDBCluster: DBCLUSTER_NAME
          pointInTime: "TIMESTAMP"
      

    执行以下变量替换操作:

    • RESTORE_NAME:此 Restore 清单的名称。例如 my-restore-1。

    • DBCLUSTER_NAME:要就地恢复的目标数据库集群的名称。

    • BACKUP_NAME:要从中恢复的已完成 Backup 清单的名称。

    • TIMESTAMP:RFC 3339 时间戳,用于标识要恢复到的确切时间点。例如 2026-06-19T14:30:00Z。

  2. 应用 Restore 清单:

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "RESTORE_MANIFEST"

    执行以下变量替换操作:

    • DEPLOYMENT_SPEC_PATH:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。

    • RESTORE_MANIFEST:您在第 1 步中创建的 Restore 清单规范文件的路径。

  3. 确认 Restore 清单的 status.phase 已转换为 Succeeded:

    alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t Restore -n RESTORE_NAME -o yaml

Ansible

  1. 使用以下格式创建 Restore 清单:

    • 如需从特定命名备份进行恢复,请运行以下命令:
    Restore:
      metadata:
        name: RESTORE_NAME
      spec:
        sourceDBCluster: DBCLUSTER_NAME
        backup: BACKUP_NAME
    
    • 如需执行时间点恢复 (PITR),请执行以下操作:

      Restore:
        metadata:
          name: RESTORE_NAME
        spec:
          sourceDBCluster: DBCLUSTER_NAME
          pointInTime: "TIMESTAMP"
      

    执行以下变量替换操作:

    • RESTORE_NAME:此 Restore 清单的名称。例如 my-restore-1。

    • DBCLUSTER_NAME:要就地恢复的目标数据库集群的名称。

    • BACKUP_NAME:要从中恢复的已完成 Backup 清单的名称。

    • TIMESTAMP:RFC 3339 时间戳,用于标识要恢复到的确切时间点。例如 2026-06-19T14:30:00Z。

  2. 为 Restore 清单创建 playbook:

    - name: RESTORE_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.restore
    

    执行以下变量替换操作:

    • RESTORE_PLAYBOOK_NAME:Ansible playbook 的名称。

    • ANSIBLE_USER:Ansible 用于登录 AlloyDB Omni 节点的操作系统用户。

    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。

  3. 应用 Restore 清单:

    ansible-playbook RESTORE_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
      -e resource_spec="RESTORE_MANIFEST"

    执行以下变量替换操作:

    • RESTORE_PLAYBOOK:您在第 2 步中为 Restore 清单创建的 playbook 的路径。

    • DEPLOYMENT_SPEC_PATH:部署规范的路径。

    • RESTORE_MANIFEST:您在第 1 步中创建的 Restore 清单规范文件的路径。

  4. 如果您还没有 status.yaml playbook,请创建一个。如需了解如何创建 playbook,请参阅查看状态和列出备份资源。

  5. 确认 Restore 清单的 status.phase 转换为 Succeeded:

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=Restore \
      -e resource_name=RESTORE_NAME

查看状态并列出备份资源

如需查看 BackupPlan、Backup 和 Restore 资源的状态或列出这些资源,请使用以下任一方法:

alloydbctl

如需列出特定类型的所有资源,请运行 alloydbctl get 命令:

alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t RESOURCE_TYPE

如需查看特定资源的状态,请运行 alloydbctl get 命令,并将资源名称和输出格式设置为 yaml:

alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t RESOURCE_TYPE -n RESOURCE_NAME -o yaml

执行以下变量替换操作:

  • DEPLOYMENT_SPEC_PATH:部署规范的路径。
  • RESOURCE_TYPE:资源类型。请将此设置为 BackupPlan、Backup 或 Restore。
  • RESOURCE_NAME:您要查看状态的资源的名称。

Ansible

如需使用 Ansible 查看资源的状态或列出资源,请使用 google.alloydbomni_orchestrator.status 角色。

  1. 使用以下格式创建 playbook(例如 status.yaml):

    - name: Get resource status
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.status
    

    执行以下变量替换操作:

    • ANSIBLE_USER:Ansible 用于登录节点的操作系统用户。
    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到节点的私钥。
  2. 运行 playbook。

    如需列出特定类型的所有资源,请使用 resource_type 变量运行 playbook:

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=RESOURCE_TYPE

    如需查看特定资源的状态,请运行包含 resource_type 和 resource_name 变量的 playbook:

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=RESOURCE_TYPE \
      -e resource_name=RESOURCE_NAME

    执行以下变量替换操作:

    • DEPLOYMENT_SPEC_PATH:部署规范的路径。
    • RESOURCE_TYPE:资源类型。请将此设置为 BackupPlan、Backup 或 Restore。
    • RESOURCE_NAME:您要查看其状态的资源的名称。

限制

  • 如果 BackupPlan 状态显示 ConfigurationFailed,并带有 failed to create stanza(退出代码 39),您可以授予存储桶 roles/storage.objectAdmin 角色并重新应用清单,以恢复协调。无需删除 BackupPlan。