Cassandra 還原概略

本頁面將概略說明如何在 Apigee hybrid 中還原 Cassandra。

為什麼要使用還原功能?

發生災難性故障時 (例如 Apigee 混合執行個體因災難而發生無法復原的資料遺失),您可以使用備份功能從頭開始還原 Apigee 基礎架構。還原作業會從備份位置取得資料,並將資料還原至具有相同節點數量的新 Cassandra 叢集。系統不會從舊 Cassandra 叢集擷取任何叢集資料。復原程序的目標是使用快照中的備份資料,將 Apigee 混合式安裝作業還原至先前的運作狀態。

在下列情況下,我們不建議使用備份還原資料:

  • Cassandra 節點發生故障。
  • 不小心刪除 appsdevelopersapi_credentials 等資料。
  • 多地區混合部署中,有一或多個地區發生中斷。

Apigee Cassandra 部署和營運架構可處理單一地區的備援和容錯功能。在大多數情況下,建議採用混合型多區域實際生產環境,這表示區域故障時,可以使用區域停用和擴充程序從其他運作中的區域復原,而非從備份復原。

開始從 Cassandra 備份執行還原作業前,請注意下列事項:

  • 停機時間:在還原期間,服務會暫時停止運作。
  • 資料遺失:在最後一次有效備份和還原作業完成之間,資料會有所遺失。
  • 還原時間:還原時間取決於資料和叢集的大小。
  • 選擇性還原資料:您無法只選取特定資料來還原。還原作業會還原所選的整個備份。

多區域還原

如果您在多個區域安裝 Apigee hybrid,則必須檢查要還原的區域的覆寫檔案,確保 cassandra:hostNetwork 已設為 false,再執行還原作業。詳情請參閱「在多個區域中還原」。

必要條件

請確認下列所有必要條件均已成功完成。請先調查所有必要條件失敗情形,再繼續進行還原作業。

  1. 使用下列指令,確認所有 Cassandra Pod 都已啟用並執行。
    kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra

    輸出內容應如以下範例所示:

    NAME                         READY   STATUS    RESTARTS   AGE
    apigee-cassandra-default-0   1/1     Running   0          14m
    apigee-cassandra-default-1   1/1     Running   0          13m
    apigee-cassandra-default-2   1/1     Running   0          11m
    exampleuser@example hybrid-files %
          
  2. 使用下列指令,確認 Cassandra statefulset 顯示所有 Pod 皆在執行中。
    kubectl get sts -n APIGEE_NAMESPACE -l app=apigee-cassandra

    輸出內容應如以下範例所示:

    NAME                       READY   AGE
    apigee-cassandra-default   3/3     15m
        
  3. 使用下列指令,確認 ApigeeDatastore 資源處於「執行中」狀態。
    kubectl get apigeeds -n APIGEE_NAMESPACE

    輸出內容應如以下範例所示:

    NAME      STATE     AGE
    default   running   16m
        
  4. 請使用下列指令,確認所有 Cassandra PVC 皆處於 Bound 狀態。
    kubectl get pvc -n APIGEE_NAMESPACE -l app=apigee-cassandra

    輸出內容應如以下範例所示:

    NAME                                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0   Bound    pvc-a14184e7-8745-4b30-8069-9d50642efe04   10Gi       RWO            standard-rwo   17m
    cassandra-data-apigee-cassandra-default-1   Bound    pvc-ed129dcb-4706-4bad-a692-ac7c78bad64d   10Gi       RWO            standard-rwo   15m
    cassandra-data-apigee-cassandra-default-2   Bound    pvc-faed0ad1-9019-4def-adcd-05e7e8bb8279   10Gi       RWO            standard-rwo   13m
        
  5. 請使用下列指令,確認所有 Cassandra PV 皆處於 Bound 狀態。
    kubectl get pv -n APIGEE_NAMESPACE

    輸出內容應如以下範例所示:

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                              STORAGECLASS   REASON   AGE
    pvc-a14184e7-8745-4b30-8069-9d50642efe04   10Gi       RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-default-0   standard-rwo            17m
    pvc-ed129dcb-4706-4bad-a692-ac7c78bad64d   10Gi       RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-default-1   standard-rwo            16m
    pvc-faed0ad1-9019-4def-adcd-05e7e8bb8279   10Gi       RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-default-2   standard-rwo            14m
        
  6. 請使用下列指令,確認 Apigee Controller 資源處於「Running」狀態。
    kubectl get pods -n APIGEE_NAMESPACE-system -l app=apigee-controller

    輸出內容應如以下範例所示:

    NAME                                         READY   STATUS    RESTARTS   AGE
    apigee-controller-manager-856d9bb7cb-cfvd7   2/2     Running   0          20m
        

如何還原?

視 Apigee hybrid 是部署在單一區域還是多個區域而定,Cassandra 的還原步驟會略有不同。如需詳細的還原步驟,請參閱下列說明文件: