本頁說明如何在單一區域還原 Cassandra。
在單一地區部署中,Apigee Hybrid 會部署在單一資料中心或地區。如果部署作業有多個 Apigee 機構,還原程序會還原所有機構的資料。在多機構設定中,您無法還原特定機構。
從備份還原區域
請根據您用於 Apigee Hybrid 的管理工具,選擇下列操作說明:
Helm
-
更新
overrides.yaml檔案中的 Cassandra 還原詳細資料:namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false ...
其中:
屬性 說明 namespaceYOUR_RESTORE_NAMESPACE
要還原的命名空間。使用與原始叢集相同的命名空間。
cassandra:hostNetworkhostNetwork為必要欄位,且一律應設為false。restore:enabled還原功能預設為停用。您必須將這個屬性設為 true。restore:serviceAccountPathSA_JSON_FILE_PATH
您為備份作業建立的服務帳戶在檔案系統中的路徑。
restore:dbStorageBucketCLOUD_STORAGE_BUCKET_PATH
備份資料儲存位置的 Cloud Storage 值區路徑,格式如下:
gs://BUCKET_NAME。 必須提供gs://。restore:cloudProviderGCPcloudProvider: "GCP"屬性為必填欄位。restore:snapshotTimestampTIMESTAMP
要還原的備份快照時間戳記。如要查看可使用的時間戳記,請前往
dbStorageBucket,並查看值區中的檔案。每個檔案名稱都包含時間戳記值。例如:backup_20210203213003_apigee-cassandra-default-0.tgz其中 20210203213003 是
snapshotTimestamp值,如果您想還原當時建立的備份,就會使用這個值。backup:enabled如果先前已將這個屬性設為 true,則應設為false。 -
如果沒有乾淨的叢集可供使用,請按照「Decommission a hybrid region for helm」文件操作,將現有的 Hybrid 安裝作業恢復為乾淨狀態 (您可以保留 Cert Manager)。這會讓您達到與手動設定 Helm 執行階段相同的狀態,直到步驟 11 開始為止。
-
確認 Apigee 命名空間中沒有任何剩餘的 Pod:
kubectl get pods -n apigeekubectl get pods -n apigee-system -
如果使用 CSI 備份,請執行下列指令,確認您要用於還原程序的 volumesnapshot:
kubectl get volumesnapshot -n apigee -
請按照安裝手冊的步驟 11,逐一安裝所有 Hybrid 元件。請注意,執行安裝
datastore的指令後,系統會建立apigee-cassandra-restorePod,但只有在安裝apigee-org元件後,Pod 才會進入running狀態。
如要進一步瞭解 Cassandra 備份與還原,請參閱「Cassandra 備份總覽」。
apigeectl
在設定中,Cassandra 備份可以位於 Cloud Storage 或遠端伺服器。無論是哪種情況,請按照下列步驟還原:
- 確認混合式版本。
確認版本與在儲存空間中建立備份檔案的版本相同。apigeectl version
- 確認要還原的 Kubernetes 叢集先前未安裝 Apigee Hybrid。如果還原至現有叢集,請使用下列指令刪除現有的 Apigee Hybrid 安裝項目:
apigeectl delete -f overrides.yamlkubectl -n apigee get apigeedatastore,apigeeredis,apigeetelemetry,org,env,arc # The output should be empty.apigeectl delete --all -f overrides.yaml - 開啟
overrides.yaml檔案,並將restore屬性設為所需值:Cloud Storage
參數
namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false 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: false serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" schedule: "0 2 * * *" ...
其中:
屬性 說明 namespaceYOUR_RESTORE_NAMESPACE
要還原的命名空間。使用與原始叢集相同的命名空間。
cassandra:hostNetworkhostNetwork為必要欄位,且一律應設為false。restore:enabled還原功能預設為停用。您必須將這個屬性設為 true。restore:serviceAccountPathSA_JSON_FILE_PATH
您為備份作業建立的服務帳戶在檔案系統中的路徑。
restore:dbStorageBucketCLOUD_STORAGE_BUCKET_PATH
備份資料儲存位置的 Cloud Storage 值區路徑,格式如下:
gs://BUCKET_NAME。 必須提供gs://。restore:cloudProviderGCPcloudProvider: "GCP"屬性為必填欄位。restore:snapshotTimestampTIMESTAMP
要還原的備份快照時間戳記。如要查看可使用的時間戳記,請前往
dbStorageBucket,並查看值區中的檔案。每個檔案名稱都包含時間戳記值。例如:backup_20210203213003_apigee-cassandra-default-0.tgz其中 20210203213003 是
snapshotTimestamp值,如果您想還原當時建立的備份,就會使用這個值。backup:enabled如果先前已將這個屬性設為 true,則應設為false。backup:serviceAccountPathSA_JSON_FILE_PATH
檔案系統中服務帳戶 JSON 檔案的路徑,該檔案是在您執行
./tools/create-service-account時下載。backup:dbStorageBucketCLOUD_STORAGE_BUCKET_PATH
Cloud Storage 值區路徑,格式如下:
gs://BUCKET_NAME。 必須提供gs://。backup:cloudProviderGCPcloudProvider: "GCP"屬性為必填欄位。backup:scheduleSCHEDULE
備份開始時間,以標準 crontab 語法指定。預設值:
0 2 * * *非雲端儲存空間
參數
namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false 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: false 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 * * *" ...其中:
屬性 說明 namespaceYOUR_RESTORE_NAMESPACE
要還原的命名空間。使用與原始叢集相同的名稱命名空間。
cassandra:hostNetworkhostNetwork為必要欄位,且一律應設為false。restore:enabled還原功能預設為停用。您必須將這個屬性設為 true。restore:keyFilePATH_TO_PRIVATE_KEY_FILE
本機檔案系統上安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中,該檔案名為
ssh_key)。restore:serverBACKUP_SERVER_IP
備份伺服器的 IP 位址。
restore:storageDirectoryBACKUP_DIRECTORY
備份伺服器上的備份目錄名稱。 這必須是
home/apigee內的目錄 (備份目錄在建立備份目錄的步驟中命名為cassandra_backup)。restore:cloudProviderHYBRIDcloudProvider: "HYBRID"屬性為必填欄位。restore:snapshotTimestampTIMESTAMP
要還原的備份快照時間戳記。如要查看可使用的時間戳記,請前往
dbStorageBucket,並查看值區中的檔案。每個檔案名稱都包含時間戳記值。例如:backup_20210203213003_apigee-cassandra-default-0.tgz其中 20210203213003 是
snapshotTimestamp值,如果您想還原在該時間點建立的備份,就會使用這個值。backup:enabled如果先前已將這個屬性設為 true,請將其設為false。backup:keyFilePATH_TO_PRIVATE_KEY_FILE
本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中,該檔案名為
ssh_key)。backup:serverBACKUP_SERVER_IP
備份伺服器的 IP 位址。
backup:storageDirectoryBACKUP_DIRECTORY
備份伺服器上的備份目錄名稱。這必須是
home/apigee內的目錄 (備份目錄在建立備份目錄的步驟中命名為cassandra_backup)。backup:cloudProviderHYBRIDcloudProvider: "HYBRID"屬性為必填欄位。backup:scheduleSCHEDULE
備份開始時間,以標準 crontab 語法指定。預設值:
0 2 * * * - 建立新的混合式執行階段部署作業。這會建立新的 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
確認還原作業進度,並確認 apigeeds 和所有其他 Pod 均已啟動:
- 檢查
apigeeds:kubectl get apigeeds -n apigee
- 檢查所有其他 Pod:
kubectl get pods -n apigee
成功完成還原作業並確認執行階段元件運作正常後,建議您在叢集上設定備份:
- 從
overrides-restore.yaml檔案中移除restore設定。 - 將
backup設定新增至overrides-restore.yaml檔案。 - 使用下列指令套用
backup設定:Helm
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
apigeectl./apigeectl apply -f ../overrides.yaml