在 Cloud Storage 中安排备份

本页面介绍了如何在 Cloud Storage 中为 Cassandra 安排备份。 通过此方法,备份会存储在指定的 Cloud Storage 存储桶中。

如需计划 Cassandra 备份,请执行以下步骤:

  1. 运行以下 create-service-account 命令以创建具有标准 roles/storage.objectAdmin 角色的 Google Cloud 服务账号 (SA)。此 SA 角色允许您将备份数据写入 Cloud Storage。E 在您的管理工具对应的目录中执行以下命令:
    • Helm 图表: $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
    • apigeectlHYBRID_BASE_DIRECTORY/hybrid-files/
    ./tools/create-service-account --env non-prod --dir ./service-accounts
    此命令会创建一个名为 apigee-non-prod 的服务账号,以用于非生产环境,并将下载的密钥文件放在 ./service-accounts 目录中。 如需详细了解 Google Cloud 服务账号,请参阅创建和管理服务账号
  2. create-service-account 命令会保存包含服务账号私钥的 JSON 文件。该文件会保存在执行命令的目录中。执行以下步骤将需要此文件的路径。
  3. 创建 Cloud Storage 存储桶。 为存储桶指定合理的数据保留政策。Apigee 建议采用 15 天的数据保留政策。
  4. 打开您的 overrides.yaml 文件。
  5. 添加以下 cassandra.backup 属性以启用备份。请勿移除任何已配置的属性。

    参数

    cassandra:
        ...
    
        backup:
          enabled: true
          serviceAccountPath: SA_JSON_FILE_PATH
          dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH
          schedule: BACKUP_SCHEDULE_CODE
          cloudProvider: "GCP"  # For remote server backup set this to HYBRID (all caps)
    
        ...
        

    示例

      ...
    
      cassandra:
        storage:
          type: gcepd
          capacity: 50Gi
          gcepd:
            replicationType: regional-pd
        auth:
          default:
            password: "abc123"
          admin:
            password: "abc234"
          ddl:
            password: "abc345"
          dml:
            password: "abc456"
        nodeSelector:
          key: cloud.google.com/gke-nodepool
          value: apigee-data
        backup:
          enabled: true
          serviceAccountPath: "my-cassandra-backup-sa.json"
          dbStorageBucket: "gs://myname-cassandra-backup"
          schedule: "45 23 * * 6"
          cloudProvider: "GCP"
          
    
    
        ... 
  6. 其中:
    属性 说明
    backup:enabled 备份默认处于停用状态。您必须将此属性设为 true
    backup:serviceAccountPath

    SA_JSON_FILE_PATH

    文件系统上指向在运行 create-service-account 命令时下载的服务账号 JSON 文件的路径。

    对于使用 Helm 管理的安装,路径必须相对于 apigee-datastore 图表目录。例如,
    serviceAccountPath: myproject-apigee-cassandra.json

    对于使用 apigeectl 管理的安装,您还可以提供相对文件路径。该路径相对于 hybrid-base-directory/hybrid-files 目录。

    backup:dbStorageBucket

    CLOUD_STORAGE_BUCKET_PATH

    Cloud Storage 存储桶路径,格式如下:gs://BUCKET_NAMEgs:// 是必需的。

    backup:cloudProvider

    GCP/HYBRID

    对于 Cloud Storage 备份,请将此属性设置为 GCP。例如:cloudProvider: "GCP"

    对于远程服务器备份,请将此属性设置为 HYBRID。例如:cloudProvider: "HYBRID"

    backup:schedule

    BACKUP_SCHEDULE_CODE

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

  7. 将配置更改应用到新集群。例如:

    Helm

    helm upgrade datastore apigee-datastore/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    apigeectl

    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore

    其中,OVERRIDES_FILE 是您刚刚修改的替换文件的路径。

  8. 验证备份作业。例如:
    kubectl get cronjob -n apigee
      NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

启动手动备份

Cassandra 备份会根据 overrides.yaml 文件中设置的 Cron 时间表自动生成。

如需启动手动备份,请使用以下命令:

kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup BACKUP_POD_NAME