在單一區域中還原

本頁面說明如何在單一地區還原 Cassandra。

在單一地區部署時,Apigee hybrid 會部署在單一資料中心或地區。如果部署中有多個 Apigee 機構,還原程序會還原所有機構的資料。在多機構設定中,您無法還原特定機構。

從備份還原區域

在您的設定中,Cassandra 備份可以位於 Cloud Storage 或遠端伺服器上。無論是哪種情況,請按照下列步驟進行還原作業:

  1. 確認混合式版本。
    apigeectl version
    請確認版本與儲存空間中建立備份檔案的版本相同。
  2. 請確認您要還原至的 Kubernetes 叢集沒有先前的 Apigee 混合式安裝作業。如果您要還原至現有叢集,請使用下列指令刪除現有的 Apigee 混合式安裝:
    apigeectl delete -f overrides.yaml
    kubectl -n apigee get apigeedatastore,apigeeredis,apigeetelemetry,org,env,arc # The output should be empty.
    apigeectl delete --all -f overrides.yaml
  3. 開啟 overrides.yaml 檔案,並將 restore 屬性設為所需值:

    Cloud Storage

    參數

    namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster.
    cassandra:
      hostNetwork: false
      ...
      restore:
        enabled: true
        serviceAccountPath: "SA_JSON_FILE_PATH"
        dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH"
        cloudProvider: "GCP"  # required verbatim "GCP" (all caps)
        snapshotTimestamp: "TIMESTAMP"
      ...
      backup:
        enabled: true
        serviceAccountPath: "SA_JSON_FILE_PATH"
        dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH"
        cloudProvider: "GCP"  # required verbatim "GCP" (all caps)
        schedule: "SCHEDULE"

    範例

    namespace: apigee
    cassandra:
      hostNetwork: false
      ...
      restore:
        enabled: true
        serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json"
        dbStorageBucket: "gs://myname-cassandra-backup"
        cloudProvider: "GCP"
        snapshotTimestamp: "20201001183903"
      ...
      backup:
        enabled: true
        serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json"
        dbStorageBucket: "gs://myname-cassandra-backup"
        cloudProvider: "GCP"
        schedule: "0 2 * * *"
      ...

    其中:

    屬性 說明
    namespace

    YOUR_RESTORE_NAMESPACE

    要還原的命名空間。使用原始叢集中的命名空間。

    cassandra:hostNetwork

    hostNetwork 是必要參數,應一律設為 false

    restore:enabled 還原功能預設為停用。您必須將這個屬性設為 true
    restore:serviceAccountPath

    SA_JSON_FILE_PATH

    您為備份作業建立的服務帳戶在檔案系統中的路徑。

    restore:dbStorageBucket

    CLOUD_STORAGE_BUCKET_PATH

    備份資料儲存位置的 Cloud Storage 值區路徑,格式如下:gs://BUCKET_NAME。必須使用 gs://

    restore:cloudProvider

    GCP

    必須使用 cloudProvider: "GCP" 屬性。

    restore:snapshotTimestamp

    TIMESTAMP

    要還原的備份快照時間戳記。如要查看可使用的時間戳記,請前往 dbStorageBucket,查看值區中的檔案。每個檔案名稱都包含時間戳記值。例如: backup_20210203213003_apigee-cassandra-default-0.tgz

    其中 20210203213003 是您要用來還原在該時間點建立的備份的 snapshotTimestamp 值。

    backup:enabled 備份功能預設為停用。您必須將這個屬性設為 true
    backup:serviceAccountPath

    SA_JSON_FILE_PATH

    您在執行 ./tools/create-service-account 時下載的服務帳戶 JSON 檔案在檔案系統中的路徑

    backup:dbStorageBucket

    CLOUD_STORAGE_BUCKET_PATH

    Cloud Storage 值區路徑格式如下: gs://BUCKET_NAME。 必須使用 gs://

    backup:cloudProvider

    GCP

    必須使用 cloudProvider: "GCP" 屬性。

    backup:schedule

    SCHEDULE

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

    非 Cloud Storage

    參數

      namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster.
      cassandra:
        hostNetwork: false
        ...
        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:
        hostNetwork: false
        ...
        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

    要還原的命名空間。使用原始叢集中的命名空間。

    cassandra:hostNetwork

    hostNetwork 是必要參數,應一律設為 false

    restore:enabled 還原功能預設為停用。您必須將這個屬性設為 true
    restore:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中,此檔案名為 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_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. 建立新的混合式執行階段部署作業。這會建立新的 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