在 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" # required verbatim "GCP" (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_NAME。必須使用 gs://

    backup:cloudProvider

    GCP

    如要備份至 Cloud Storage,請將屬性設為 GCP

    backup:schedule

    BACKUP_SCHEDULE_CODE

    備份開始的時間,以 標準 crontab 語法指定。預設值:0 2 * * *

  7. 將設定變更套用至新叢集。例如:

    Helm

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

    apigeectl

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

    其中 OVERRIDES_FILE 是指您剛剛編輯的覆寫檔案路徑。

  8. 驗證備份工作。例如:
    kubectl get cronjob -n APIGEE_NAMESPACE
      NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

啟動手動備份

系統會根據 overrides.yaml 檔案中的 cassandra.backup.schedule 設定,自動觸發備份工作。不過,您也可以視需要使用下列指令手動啟動備份工作:

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

其中 MANUAL_BACKUP_JOB_NAME 是您要建立的手動備份工作名稱。