維護 Spanner Omni 部署作業

本文說明如何維護 Spanner Omni 部署作業。維護 Spanner Omni 部署作業包括例行健康狀態檢查、停用狀況不佳的元素,以及更換伺服器節點或故障磁碟,確保叢集穩定性和一致性。管理資料庫健康狀態可保護資料庫免於無預警中斷,並維持基礎 Paxos 共識群組的備援。

執行維護作業有助於:

  • 確保高可用性:重新佈建狀況不佳的虛擬機器 (VM) 或 Pod,維持資料庫伺服器備援。這樣一來,即使硬體故障,應用程式也能繼續運作。

  • 保護資料安全和完整性:停用磁碟故障的節點,防止儲存空間故障擴散到資料庫的其他部分。這也能確保已中斷連線的伺服器不會記錄衝突的更新。

事前準備

對 Kubernetes 部署項目執行維護作業前,請務必完成下列事項:

更換伺服器

您可能需要更換部署環境中的伺服器,才能解決系統或儲存空間故障問題。

更換根伺服器

如要更換根伺服器,請選取環境的分頁:

Kubernetes

如要在 Kubernetes 部署作業中取代根伺服器,請執行下列步驟。雖然系統不支援在現有 Kubernetes 部署作業中新增更多根伺服器,但您可以替換現有根伺服器,解決任何無法復原的錯誤。

  1. 刪除要取代的伺服器:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    更改下列內容:

    • SERVER_ENDPOINT:要刪除的伺服器 Pod 端點,格式為 SERVER.pod.NAMESPACE:PORT,例如 spanner-a-1.pod.spanner-ns:15000。如要找出部署作業中的伺服器端點,請執行 spanner deployment servers list --zone=ZONE 列出部署作業伺服器。
    • ZONE:伺服器所在的區域,例如 us-central1-a

    視伺服器上的資料量而定,這個步驟可能需要幾分鐘。Spanner Omni 會將這個伺服器的資料重新移至部署作業中的其他伺服器。請先確認伺服器刪除作業完成,再繼續進行下一個步驟。

    如要追蹤刪除進度,請檢查伺服器狀態:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    等待指令傳回 NOT_FOUND 錯誤,或指出伺服器已不再註冊。

  2. 刪除代管伺服器的 Pod 的永久磁碟區要求 (PVC):

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    更改下列內容:

    • DATA_VOLUME_NAME:資料量名稱,例如 data-volume-spanner-a-1。如要找出資料磁碟區名稱,請執行 kubectl get pvc -n NAMESPACE,列出命名空間中的 PVC。
    • NAMESPACE:部署作業的命名空間,例如 spanner-ns
  3. 刪除 Pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    POD_NAME 替換為要刪除的伺服器 Pod 名稱,例如 spanner-a-1

    Kubernetes 會在替代 Pod 中自動啟動新伺服器,並附加新的 PVC。

  4. 將新伺服器新增至部署作業:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    確認引數符合新的 Pod 端點和區域,例如使用 spanner-a-1.pod.spanner-ns:15000 做為端點,並使用 us-central1-a 做為區域。

VM

如要在 VM 部署作業中替換根伺服器,請執行下列步驟:

  1. 刪除要取代的伺服器:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    更改下列內容:

    • SERVER_ENDPOINT:伺服器 IP 位址或主機名稱和連接埠,例如 spanner-vm-1.example.com:15000。如要找出伺服器端點,請執行 spanner deployment servers list --zone=ZONE 列出部署伺服器。
    • ZONE:伺服器所在的區域,例如 us-central1-a

    視伺服器上的資料量而定,這個步驟可能需要幾分鐘。Spanner Omni 會將這個伺服器的資料重新移至部署作業中的其他伺服器。請先確認伺服器刪除作業完成,再繼續進行下一個步驟。

    如要追蹤刪除進度,請檢查伺服器狀態:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    等待指令傳回 NOT_FOUND 錯誤,或指出伺服器已不再註冊。

  2. 如「在 VM 上建立 Spanner Omni 的部署作業」一文所述,使用乾淨的儲存空間重新佈建伺服器:

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    更改下列內容:

    • HOSTNAME:新 VM 的可解析 FQDN 或主機名稱,例如 spanner-vm-1.example.com
    • ZONE:目標區域,例如 us-central1-a
    • BASE_DIR:資料儲存路徑,例如 ./span-dir
  3. 將新伺服器新增至部署作業:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    確認引數符合新伺服器的參數,例如使用 spanner-vm-1.example.com:15000 做為端點,並使用 us-central1-a 做為區域。

更換非根伺服器

如要更換非根伺服器,請選取環境的分頁:

Kubernetes

如要在 Kubernetes 部署作業中取代非根伺服器,請執行下列步驟:

  1. 刪除要取代的伺服器:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    更改下列內容:

    • SERVER_ENDPOINT:要刪除的伺服器 Pod 端點,格式為 SERVER.pod.NAMESPACE:PORT,例如 spanner-a-4.pod.spanner-ns:15000。如要找出部署作業中的伺服器端點,請執行 spanner deployment servers list --zone=ZONE 列出部署作業伺服器。
    • ZONE:伺服器所在的區域,例如 us-central1-a

    視伺服器上的資料量而定,這個步驟可能需要幾分鐘。Spanner Omni 會將這個伺服器的資料重新移至部署作業中的其他伺服器。請先確認伺服器刪除作業完成,再繼續進行下一個步驟。

    如要追蹤刪除進度,請檢查伺服器狀態:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    等待指令傳回 NOT_FOUND 錯誤,或指出伺服器已不再註冊。

  2. 刪除代管伺服器的 Pod 的永久磁碟區要求 (PVC):

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    更改下列內容:

    • DATA_VOLUME_NAME:資料量名稱,例如 data-volume-spanner-a-4。如要找出資料磁碟區名稱,請執行 kubectl get pvc -n NAMESPACE,列出命名空間中的 PVC。
    • NAMESPACE:部署作業的命名空間,例如 spanner-ns
  3. 刪除 Pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    POD_NAME 替換為要刪除的伺服器 Pod 名稱,例如 spanner-a-4

    Kubernetes 會在替代 Pod 中自動啟動新伺服器,並附加新的 PVC。Spanner Omni 會自動將新的非根伺服器註冊至部署作業。

VM

如要在 VM 部署中取代非根伺服器,請執行下列步驟:

  1. 刪除要取代的伺服器:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    更改下列內容:

    • SERVER_ENDPOINT:伺服器 IP 位址或主機名稱和連接埠,例如 spanner-vm-4.example.com:15000。如要找出伺服器端點,請執行 spanner deployment servers list --zone=ZONE 列出部署伺服器。
    • ZONE:伺服器所在的區域,例如 us-central1-a

    視伺服器上的資料量而定,這個步驟可能需要幾分鐘。Spanner Omni 會將這個伺服器的資料重新移至部署作業中的其他伺服器。請先確認伺服器刪除作業完成,再繼續進行下一個步驟。

    如要追蹤刪除進度,請檢查伺服器狀態:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    等待指令傳回 NOT_FOUND 錯誤,或指出伺服器已不再註冊。

  2. 按照「新增非根伺服器」一文的說明,使用乾淨的儲存空間重新佈建非根伺服器。伺服器會自動新增至部署作業。

後續步驟