移動執行個體

本頁面說明如何在 Spanner 中移動執行個體。

您可以將 Spanner 執行個體從任何執行個體設定移至任何其他執行個體設定,包括區域、雙區域和多區域設定。遷移執行個體不會造成服務中斷,且 Spanner 會在遷移期間繼續提供一般交易保證,包括強一致性。

您也可以將執行個體從來源執行個體設定移至自訂執行個體設定 (例如,具有 us-west2 唯讀備用資源的 nam3 基礎設定)。由於您無法更新現有執行個體設定的拓樸,因此必須先建立新的自訂執行個體設定,並使用所需的拓樸。建立新的自訂執行個體設定後,您可以將執行個體從來源執行個體設定移至新的自訂執行個體設定。

為何要移動 Spanner 執行個體?

遷移執行個體的好處包括:

  • 提高可用性:在從區域遷移至雙區域或多區域後,可獲得 99.999% 的可用性,且不會有任何停機時間。
  • 降低延遲時間:透過從地區遷移至雙地區或多地區,或從多地區遷移至多地區,新增唯讀備援資料副本,進而降低延遲時間並擴大地理涵蓋範圍。
  • 降低成本:從雙區域或多區域設定改為區域設定,以降低每小時費用。
  • 資料庫並置:將執行個體移至更合適的位置,以便將 Spanner 資料庫與用戶端應用程式並置。

定價

移動執行個體時,來源和目標執行個體的設定都會依據每小時的運算和儲存空間費用收費。遷移完成後,您會依據目的地設定支付執行個體儲存空間費用。

如果您將執行個體移至新的單一地區、雙區域或多區域執行個體設定,可能會產生傳出資料轉移費用。詳情請參閱「Spanner 定價」。

限制

  • 如要移動執行個體,該執行個體必須至少有 1 個節點 (1, 000 個處理單元)
  • 您無法在不同專案和 Google Cloud 帳戶之間移動執行個體。
  • 您無法直接將使用標準版的執行個體從區域執行個體設定移至雙區域或多區域執行個體設定。您必須先將執行個體的版本升級至 Enterprise Plus 版,然後再移動執行個體。
  • 您無法移動 Spanner 免費試用執行個體升級為付費執行個體後,您可以移動執行個體。
  • 如果您在任何執行個體資源上使用區域服務端點的有效要求,則執行個體移轉會影響所有使用區域端點的要求,因為區域執行機制會封鎖跨區域執行個體的存取權。使用全球端點的請求不受影響。
  • Spanner 備份是特定執行個體設定,在移動執行個體時不會納入。詳情請參閱「備份」。
  • 在執行個體移動期間,下列 API 會停用:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (如果在要求中指定 default_leader,則會停用)。
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • 您無法移動包含任何 CMEK 啟用資料庫的執行個體。
  • 如果資料庫有已修改的預設主要備用資源,在目的地執行個體設定中命名讀取/寫入區域,且該設定為多區域時,系統就會保留選取項目。如果目的地設定是區域性質,或不包含已命名的讀取/寫入區域,系統會清除預設的主要備用資源選項。
  • 移動執行個體會變更執行個體的執行個體設定屬性。如果您透過自動化功能管理 Spanner 資源,請務必準備並解決可能發生的任何不一致問題。
    • 舉例來說,如果您使用 Terraform 管理 Spanner 執行個體和資料庫,並啟用 terraform apply --auto-approve 來保持資源同步,則在移動執行個體時,所有執行個體和子項資源都會遭到刪除。請據此更新設定,避免資料遭到刪除或遺失。如要進一步瞭解 apply 指令,請參閱「Terraform 套用選項」。
  • 在遷移執行個體的過程中,Spanner 監控指標和圖表可能會同時顯示來源和目的地執行個體設定中的資料,也可能只反映單一執行個體設定中的效能。
  • 如果您已設定開源自動配置器工具,則不需要停用該工具。由於 InstanceAdmin.UpdateInstance (用於節點和處理單元變更) 已停用,因此會失敗。
  • 如果已為執行個體啟用 Spanner 管理的自動配置器功能,您就無法移動該執行個體。如要移動執行個體,您必須停用代管自動配置器、移動執行個體,然後重新啟用代管自動配置器。

    此外,如果您使用自動調度資源功能,則必須根據所述的最大建議值,佈建足夠的節點,以因應 CPU 使用率高峰期,然後在移動執行個體前停用自動調度資源功能。

效能注意事項

在移轉執行個體時,讀寫延遲時間和交易中止率會提高。由於執行個體遷移作業會使用使用者配置的備用 CPU,因此遷移期間的 CPU 使用率可能會達到 100%。不過,移動執行個體不會導致任何服務中斷時間。遷移執行個體所需的時間取決於多項因素,包括資料庫大小、節點數量和遷移類型 (例如從區域遷移至多區域)。

移動執行個體後,執行個體的效能會因執行個體設定的詳細資料而異。舉例來說,雙區域多區域設定通常比地區設定具有較高的寫入延遲時間,但讀取延遲時間較低。

備份

移動執行個體時,來源執行個體中的備份不會自動移至新的目標設定。如果在啟動執行個體遷移作業時,來源執行個體設定中存在備份,則系統會中止執行個體遷移作業。請務必先複製備份,並考慮資料復原計畫,再移動執行個體。

如果來源執行個體中有需要保留的備份,建議您複製備份至目的地執行個體設定,以及與要移動的來源執行個體具有相同執行個體設定的另一個執行個體。這樣一來:

  • 執行個體遷移作業完成後,您可以立即將備份複製到目標執行個體設定。
  • 如果您需要取消執行個體遷移作業,也可以從與來源執行個體設定相同的執行個體快速還原備份。

將備份複製到其他執行個體後,您必須先刪除來源執行個體中的所有現有備份,才能移動執行個體。然後,在執行個體遷移作業完成後,您就會在目的地設定中擁有備份副本。你也可以建立新的備份

如要進一步瞭解備份資料的複製作業和相關費用,請參閱「複製備份資料」。

如何移動執行個體

您可以使用 Google Cloud 指令,透過 Google Cloud 控制台 Cloud Shell 和 gcloud CLI 移動執行個體。gcloud

事前準備

在移動執行個體設定之前,請務必詳閱「限制」和「效能注意事項」一節。然後按照下列步驟操作:

  1. 請確認您在來源執行個體上具備 spanner.instances.update 身分與存取權管理權限
  2. 如有需要,請先遷移非正式環境執行個體 (例如測試和階段環境),再遷移正式環境執行個體,以便評估及瞭解執行個體遷移作業對工作負載的效能影響。
  3. 遷移 Spanner 執行個體時,遷移程序會刪除您在 Data Catalog 中建立的執行個體標記。如要保留標記,您必須在遷移前匯出標記,並在遷移後匯入標記。詳情請參閱匯出及匯入標記

請務必遵循下列最佳做法:

  • 在移動實際工作環境執行個體之前,請先在目的地執行個體設定中非實際工作環境的執行個體中測試效能工作負載。請嘗試移動與實際工作環境類似的測試環境,瞭解移動實際工作環境所需的時間。
  • 使用 Key Visualizer 檢查資料庫中是否有熱門索引鍵。
  • 請檢查目標執行個體設定是否有足夠的節點配額,以支援預期的執行個體使用率高峰。詳情請參閱「Spanner 配額與限制」。
  • 請確認執行個體的 CPU 使用率峰值 (針對您移動的執行個體設定) 低於 40%,且每個節點的儲存空間量低於 1 兆位元組 (TiB)。
  • 請勿在遷移期間變更執行個體。包括變更執行個體節點數量、變更資料庫結構定義、建立或刪除資料庫,以及建立或刪除備份。

如果您按照這些建議遷移執行個體,遷移作業通常會在 24 小時內完成。不過,視應用程式工作負載而定,完成時間可能會更長或更短。

移動執行個體

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「Instances」頁面。

    執行個體

  2. 選取要移動的執行個體。

  3. 在「執行個體」總覽頁面中,點選「設定」旁的「編輯」「將執行個體移至新設定」。

  4. 在「Move database to new configuration」窗格中,選取執行個體的新設定。

  5. 按一下 [儲存]

gcloud CLI

使用 gcloud spanner instances move 指令移動執行個體。

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

更改下列內容:

  • INSTANCE_ID:要移動的執行個體永久 ID。
  • TARGET_CONFIG:您要移動執行個體的執行個體設定永久 ID。執行個體的新地理位置。這可能是區域、雙區域或多區域執行個體設定 (例如 nam3us-central1custom-nam3-us-west2)。

舉例來說,如要將 test-instance 執行個體從目前的執行個體設定移至 nam3,請執行下列指令:

  gcloud spanner instances move test-instance --target-config=nam3

選用步驟:如要將唯讀備用資源 us-west2 新增至基礎執行個體設定 nam3,請按照下列步驟操作:

  1. 複製基礎設定並新增唯讀備用資源:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. 將執行個體 test-instance 從目前的執行個體設定移至這個新的 custom-nam3-us-west2 執行個體設定:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

如何監控執行個體遷移和取消作業的進度

您可以使用 gcloud spanner operations describe 或建立自訂 Cloud Monitoring 資訊主頁,監控執行個體遷移作業的進度。

查看遷移和取消作業進度

如要追蹤執行個體移動或執行個體移動取消作業的進度,請使用 gcloud spanner operations describe 指令。此指令需要進行中的執行個體移動作業作業 ID。

  1. 如要取得執行個體移轉作業的作業 ID,請執行以下指令:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    更改下列內容:

    • INSTANCE_ID:要移動的執行個體永久 ID。

    輸出內容會顯示長時間執行作業的清單,包括執行個體移轉作業。

  2. 執行 gcloud spanner operations describe 指令,查看進度百分比和狀態:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    更改下列內容:

    • OPERATION_ID:要檢查的執行個體移動作業作業 ID。
    • INSTANCE_ID:您要檢查的執行個體 ID。

監控執行個體移轉作業

您可以建立自訂 Cloud Monitoring 資訊主頁,在執行可能影響服務的長時間作業 (例如執行個體遷移作業) 期間顯示及監控指標。

資訊主頁中的「儲存空間總量」和「資料庫總儲存空間」圖表有助於監控遷移進度。您會發現來源設定中的儲存空間會逐漸減少,而目的地設定中的儲存空間會增加。

Google Cloud 控制台

  1. 下載 move-instance-dashboard.json 檔案。這個檔案包含在監控中填入自訂資訊主頁所需的資訊。
  2. 在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:

    前往「Dashboards」(資訊主頁)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  3. 在「資訊主頁總覽」頁面中,按一下「建立資訊主頁」
  4. 在資訊主頁工具列中,按一下「資訊主頁設定」下拉式選單。接著選取「JSON」,然後選取「JSON 編輯器」
  5. 在「JSON 編輯器」窗格中,複製下載的 move-instance-dashboard.json 檔案內容,然後貼到編輯器中。
  6. 如要將變更套用至資訊主頁,請按一下「套用變更」。如果您不想使用這個資訊主頁,請返回「資訊主頁」總覽頁面。
  7. 建立資訊主頁後,按一下「新增篩選器」。接著選取 project_idinstance_id,監控執行個體遷移作業的進度。

gcloud CLI

  1. 下載 move-instance-dashboard.json 檔案。這個檔案包含在監控中填入自訂資訊主頁所需的資訊。
  2. 如要在專案中建立資訊主頁,請使用 gcloud monitoring dashboards create 指令:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    詳情請參閱 gcloud monitoring dashboards create 參考資料。

如何取消執行個體遷移作業

您只能取消仍在進行中的執行個體遷移作業。如果您想還原已完成的執行個體遷移作業,必須啟動新的遷移作業。

您可以使用 gcloud spanner operations cancel 取消執行個體移動作業。取消作業並非立即執行,而是大約需要與移動開始時間相等的時間。這是因為資料必須移回來源執行個體設定。

此指令需要進行中的執行個體移動作業作業 ID。

  1. 執行以下指令取得作業 ID:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata
    

    更改下列內容:

    • INSTANCE_ID:要移動的執行個體永久 ID。

    輸出內容會顯示進行中的執行個體移動作業清單。

  2. 執行 gcloud spanner operations cancel 指令,取消執行個體移動作業:

    gcloud spanner operations cancel OPERATION_ID
    

    更改下列內容:

    • OPERATION_ID:您要取消的執行個體移動作業作業 ID。

後續步驟