本文說明如何維護 Spanner Omni 部署作業。維護 Spanner Omni 部署作業包括例行健康狀態檢查、停用狀況不佳的元素,以及更換伺服器節點或故障磁碟,確保叢集穩定性和一致性。管理資料庫健康狀態可保護資料庫免於無預警中斷,並維持基礎 Paxos 共識群組的備援。
執行維護作業有助於:
確保高可用性:重新佈建狀況不佳的虛擬機器 (VM) 或 Pod,維持資料庫伺服器備援。這樣一來,即使硬體故障,應用程式也能繼續運作。
保護資料安全和完整性:停用磁碟故障的節點,防止儲存空間故障擴散到資料庫的其他部分。這也能確保已中斷連線的伺服器不會記錄衝突的更新。
事前準備
對 Kubernetes 部署項目執行維護作業前,請務必完成下列事項:
建立 Spanner Omni 部署作業。詳情請參閱「在 Kubernetes 上建立部署作業」或「在 VM 上建立部署作業」。
下載並安裝 Spanner Omni CLI。
如要在 Kubernetes 上部署,請安裝 Helm 並建立 Helm chart 設定。
更換伺服器
您可能需要更換部署環境中的伺服器,才能解決系統或儲存空間故障問題。
更換根伺服器
如要更換根伺服器,請選取環境的分頁:
Kubernetes
如要在 Kubernetes 部署作業中取代根伺服器,請執行下列步驟。雖然系統不支援在現有 Kubernetes 部署作業中新增更多根伺服器,但您可以替換現有根伺服器,解決任何無法復原的錯誤。
刪除要取代的伺服器:
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錯誤,或指出伺服器已不再註冊。刪除代管伺服器的 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。
刪除 Pod:
kubectl delete pod POD_NAME -n NAMESPACE將
POD_NAME替換為要刪除的伺服器 Pod 名稱,例如spanner-a-1。Kubernetes 會在替代 Pod 中自動啟動新伺服器,並附加新的 PVC。
將新伺服器新增至部署作業:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONE確認引數符合新的 Pod 端點和區域,例如使用
spanner-a-1.pod.spanner-ns:15000做為端點,並使用us-central1-a做為區域。
VM
如要在 VM 部署作業中替換根伺服器,請執行下列步驟:
刪除要取代的伺服器:
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錯誤,或指出伺服器已不再註冊。如「在 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。
將新伺服器新增至部署作業:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONE確認引數符合新伺服器的參數,例如使用
spanner-vm-1.example.com:15000做為端點,並使用us-central1-a做為區域。
更換非根伺服器
如要更換非根伺服器,請選取環境的分頁:
Kubernetes
如要在 Kubernetes 部署作業中取代非根伺服器,請執行下列步驟:
刪除要取代的伺服器:
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錯誤,或指出伺服器已不再註冊。刪除代管伺服器的 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。
刪除 Pod:
kubectl delete pod POD_NAME -n NAMESPACE將
POD_NAME替換為要刪除的伺服器 Pod 名稱,例如spanner-a-4。Kubernetes 會在替代 Pod 中自動啟動新伺服器,並附加新的 PVC。Spanner Omni 會自動將新的非根伺服器註冊至部署作業。
VM
如要在 VM 部署中取代非根伺服器,請執行下列步驟:
刪除要取代的伺服器:
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錯誤,或指出伺服器已不再註冊。按照「新增非根伺服器」一文的說明,使用乾淨的儲存空間重新佈建非根伺服器。伺服器會自動新增至部署作業。