本頁面說明如何在單一地區還原 Cassandra。
在單一地區部署時,Apigee hybrid 會部署在單一資料中心或地區。如果部署中有多個 Apigee 機構,還原程序會還原所有機構的資料。在多機構設定中,您無法還原特定機構。
從備份還原區域
在您的設定中,Cassandra 備份可以位於 Cloud Storage 或遠端伺服器上。無論是哪種情況,請按照下列步驟進行還原作業:
- 確認混合式版本。
請確認版本與儲存空間中建立備份檔案的版本相同。apigeectl version
- 請確認您要還原至的 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
- 開啟
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 * * *
- 建立新的混合式執行階段部署作業。這會建立新的 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
設定:./apigeectl apply -f ../overrides-restore.yaml