恢复单区域部署

本页面介绍如何在单个区域中恢复 Cassandra。

在单区域部署中,Apigee Hybrid 部署在单个数据中心或区域中。如果您的部署中有多个 Apigee 组织,则恢复过程会恢复所有组织的数据。在多组织设置中,您无法恢复特定的组织。

从备份恢复区域

在配置中,Cassandra 备份可以位于 Cloud Storage 或远程服务器上。无论是哪种情况,请执行以下步骤进行恢复:

  1. 验证 Hybrid 版本。
    apigeectl version
    确保该版本与在存储空间中创建备份文件的版本相同。
  2. 确认您要恢复到的 Kubernetes 集群没有之前的 Apigee Hybrid 安装。如果您要恢复到现有集群,请使用以下命令删除现有 Apigee Hybrid 安装:
    apigeectl delete --all -f overrides.yaml
  3. 打开 overrides.yaml 文件,并将 restore 属性设置为所需的值:

    参数

    namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster.
    cassandra:
      ...
      restore:
        enabled: true
        keyFile: "PATH_TO_PRIVATE_KEY_FILE"
        server: "BACKUP_SERVER_IP"
        storageDirectory: "/home/apigee/BACKUP_DIRECTORY"
        cloudProvider: "HYBRID"  # required verbatim "HYBRID" (all caps)
        snapshotTimestamp: "TIMESTAMP"
      ...
      backup:
        enabled: true
        keyFile: "PATH_TO_PRIVATE_KEY_FILE"
        server: "BACKUP_SERVER_IP"
        storageDirectory: "/home/apigee/BACKUP_DIRECTORY"
        cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps)
        schedule: "SCHEDULE"

    示例

    namespace: apigee
    cassandra:
    ...
      restore:
        enabled: true
        keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
        server: "34.56.78.90"
        storageDirectory: "/home/apigee/cassbackup"
        cloudProvider: "HYBRID"
        snapshotTimestamp: "20201001183903"
      ...
      backup:
        enabled: true
        keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
        server: "34.56.78.90"
        storageDirectory: "/home/apigee/cassbackup"
        cloudProvider: "HYBRID"
        schedule: "0 2 * * *"
      ...

    其中:

    属性 说明
    namespace

    YOUR_RESTORE_NAMESPACE

    用于恢复的命名空间。使用原始集群中的命名空间。

    restore:enabled 恢复功能默认处于停用状态。您必须将此属性设为 true
    restore:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为 ssh_key)在本地文件系统中的路径。

    restore:server

    BACKUP_SERVER_IP

    您的备份服务器的 IP 地址。

    restore:storageDirectory

    BACKUP_DIRECTORY

    备份服务器上备份目录的名称。 此目录必须是 home/apigee 中的目录(备份目录在创建备份目录的步骤中命名为 cassandra_backup)。

    restore:cloudProvider

    HYBRID

    cloudProvider: "HYBRID" 属性是必需的属性。

    restore:snapshotTimestamp

    TIMESTAMP

    要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到 dbStorageBucket 并查看存储桶中存在的文件。每个文件名都包含时间戳值。例如,backup_20210203213003_apigee-cassandra-default-0.tgz

    其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的 snapshotTimestamp 值。

    backup:enabled 备份默认处于停用状态。您必须将此属性设为 true
    backup:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为 ssh_key)在本地文件系统中的路径。

    backup:server

    BACKUP_SERVER_IP

    您的备份服务器的 IP 地址。

    backup:storageDirectory

    BACKUP_DIRECTORY

    备份服务器上备份目录的名称。此目录必须是 home/apigee 中的目录(备份目录在创建备份目录的步骤中命名为 cassandra_backup)。

    backup:cloudProvider

    HYBRID

    cloudProvider: "HYBRID" 属性是必需的属性。

    backup:schedule

    SCHEDULE

    备份的开始时间,使用标准 crontab 语法指定。默认值:0 2 * * *

  4. 创建新的 Hybrid 运行时部署。这将创建新的 Cassandra 集群并开始将备份数据恢复到该集群中:
    ${APIGEECTL_HOME}/apigeectl init  -f overrides/overrides.yaml
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --restore
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
  5. 验证恢复作业进度,并确认 apigeeds 和其他所有 Pod 都已启动:
    • 查看 apigeeds
      kubectl get apigeeds -n apigee
    • 查看所有其他 Pod:
      kubectl get pods -n apigee

成功完成恢复并确认运行时组件健康后,我们建议在集群上配置备份:

  1. overrides-restore.yaml 文件中移除 restore 配置。
  2. backup 配置添加到 overrides-restore.yaml 文件中。
  3. 使用以下命令应用 backup 配置:
    ./apigeectl apply -f ../overrides-restore.yaml