本節將說明如何使用 ssh 和檔案系統,而非 Google Cloud,設定 Cassandra 資料庫的備份和復原作業。另請參閱:
在沒有 Google Cloud 服務的情況下,如何備份及復原 Cassandra?
不使用 Cloud Services 的備份功能會將 Cassandra 資料庫的備份儲存至指定伺服器的檔案系統中,並壓縮成檔案。備份作業會依據您在覆寫檔案中指定的時程執行。連線至伺服器的方式是透過安全的 SSH。
不使用 Cloud 服務設定備份:
以下步驟包含完成特定工作 (例如建立 SSH 金鑰組) 的常見範例。請使用適合安裝方式的方法。
這項程序包含以下部分:
設定伺服器和 SSH
- 指定 Linux 或 Unix 伺服器用於備份。這部伺服器必須可透過 SSH 從 Apigee Hybrid 執行階段平面存取。必須有足夠的儲存空間來備份資料。
- 在伺服器上設定 SSH 伺服器,或確保已設定安全的 SSH 伺服器。
- 建立安全殼層金鑰組,並將私密金鑰檔案儲存在可透過混合式執行階段平面存取的路徑中。請勿為金鑰組使用空白密碼。例如:
ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ssh_key Your public key has been saved in ssh_key.pub The key fingerprint is: SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+ - 在備份伺服器上建立名為「
apigee
」的使用者帳戶。請確認新的「apigee
」使用者在/home
下有主目錄。 - 在備份伺服器上,在新
/home/apigee
目錄中建立「ssh
」目錄。 - 將公開金鑰 (上例中的
ssh_key.pub
) 複製到新/home/apigee/ssh
目錄中的「authorized_keys
」檔案中。例如:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- 在備份伺服器上,在
/home/apigee/
目錄中建立備份目錄。只要「apigee」使用者有存取權,備份目錄可以是任何目錄。例如:cd /home/apigee
mkdir cassandra-backup
- 測試連線。您必須確保 Cassandra pod 能透過 SSH 連線至備份伺服器:
- 登入 Cassandra pod 的殼層。例如:
kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
其中 apigee-cassandra-default-0 是 cassandra pod 的名稱。將此值變更為要連線的 Pod 名稱。
- 使用伺服器 IP 位址,透過 SSH 連線至備援伺服器:
ssh apigee@backup-server-ip
- 登入 Cassandra pod 的殼層。例如:
設定備份時間表和目的地
您可以在 overrides.yaml
檔案中設定備份的時間表和目的地。
- 在
overrides.yaml
檔案中新增下列參數:參數
cassandra: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"
範例
cassandra: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 * * *"
其中:
屬性 說明 backup:enabled
備份功能預設為停用。您必須將這項屬性設為 true
path-to-private-key-file 本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中命名為 ssh_key
)。backup-server-ip 備份伺服器的 IP 位址。 backup-directory 備份伺服器上的備份目錄名稱。這個目錄必須位於 home/apigee
中 (在建立備份目錄的步驟中,備份目錄的名稱為cassandra_backup
)。HYBRID
必須使用 cloudProvider: "HYBRID"
屬性。schedule 備份作業開始的時間,以 標準 crontab 語法指定。預設值: 0 2 * * *
注意:請勿在將備份設定套用至叢集後不久,就排定備份作業。套用備份設定後,Kubernetes 會重新建立 Cassandra 節點。如果備份作業在節點重新啟動前開始 (可能需要幾分鐘),備份作業就會失敗。
- 使用
apigeectl
將備份設定套用至叢集的儲存空間範圍:$APIGEECTL_HOME/apigeectl --datastore -f your-overrides-file
其中 your-overrides-file 是指您剛剛編輯的覆寫檔案路徑。
設定還原
還原作業會從備份檔案中擷取具有您指定時間戳記的資料,並將資料還原至具有相同 Pod 數量的新 Cassandra 叢集。新叢集的命名空間必須與執行階段平面叢集不同。
如要還原 Cassandra 備份,請按照下列步驟操作:
- 使用新的命名空間建立新的 Kubernetes 叢集。您無法使用原始混合式安裝作業所用的叢集/命名空間。
- 在根混合安裝目錄中,建立新的
overrides-restore.yaml
檔案。 - 將完整的 Cassandra 設定從原始
overrides.yaml
檔案複製到新檔案。 - 在
overrides-restore.yaml
檔案中新增下列參數:參數
namespace: restore-namespace cassandra: 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: "backup-to-restore"
範例
namespace: cassandra-restore cassandra: 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"
其中:
屬性 說明 restore-namespace 您為新 Cassandra 叢集建立的新命名空間的名稱。請勿使用原始叢集的命名空間。 restore:enabled
還原功能預設為停用。您必須將這項屬性設為 true
path-to-private-key-file 本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中命名為 ssh_key
)。backup-server-ip 備份伺服器的 IP 位址。 backup-directory 備份伺服器上的備份目錄名稱。這個目錄必須位於 home/apigee
中 (在建立備份目錄的步驟中,備份目錄的名稱為cassandra_backup
)。HYBRID
必須使用 cloudProvider: "HYBRID"
屬性。backup-to-restore 您要還原的特定備份,請使用標準 Crontab 語法指定 (不允許使用萬用字元)。 - 使用
apigeectl
將備份設定套用至叢集的儲存空間範圍:$APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file
其中 your-overrides-restore-file 是您剛編輯的
overrides-restore.yaml
檔案路徑。