如要維持跨區域可用性,並在全球範圍內調度讀取工作負載,您可以建立及管理 AlloyDB for PostgreSQL 次要叢集、新增讀取集區執行個體,以及執行切換或升級作業。
如需跨區域複製的概念總覽,請參閱「跨區域複製總覽」。
事前準備
- 您使用的 Google Cloud 專案必須啟用 AlloyDB 存取權。
- 您必須在使用的 Google Cloud 專案中具備下列其中一個 IAM 角色:
roles/alloydb.admin(AlloyDB 管理員預先定義的 IAM 角色)roles/owner(擁有者基本 IAM 角色)roles/editor(編輯者基本 IAM 角色)
如果您不具備上述任一角色,請向組織管理員要求存取權。
建立次要叢集
建立次要叢集時,AlloyDB 會複製並套用主要叢集的部分設定,包括時間點復原 (PITR) 和備份設定。建立次要叢集後,無論主要叢集有多少個讀取集區執行個體,AlloyDB 都不會將任何讀取集區執行個體新增至次要叢集。
如果在建立次要叢集後更新主要叢集設定,變更不會套用至次要叢集。不過,您可以手動更新次要叢集,使其採用主要叢集的最新設定。
一個主要叢集最多可建立五個次要叢集。所有次要叢集都會從單一主要執行個體複製資料。如果升級次要叢集,該叢集就會成為獨立的主要叢集。
下圖說明如何將 us-east4 中的次要叢集 cluster-2 升級:

圖 1.升級次要叢集的範例。
如要建立 AlloyDB 次要叢集和次要執行個體,請按照下列步驟操作:
根據預設,AlloyDB 建立次要執行個體時,會使用與主要執行個體相同的機器設定。不過,如果您在建立次要執行個體後,向上擴充主要執行個體,AlloyDB 不會自動向上擴充次要執行個體,您必須手動擴充。
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「總覽」頁面,點選「建立次要叢集」。
設定次要叢集:
- 在「Cluster ID」(叢集 ID) 欄位中,輸入次要叢集的資源 ID。
- 為次要叢集選取與主要叢集不同的區域。
- 選取預設的 Google 代管加密金鑰或客戶自行管理的加密金鑰 (CMEK),做為次要叢集的加密方法。
如要使用 CMEK 金鑰加密這個叢集,請按照下列步驟操作:
- 按一下「進階加密選項」。
- 選取「客戶自行管理的加密金鑰 (CMEK)」。
從顯示的選單中選取客戶自行管理的金鑰。
Google Cloud 控制台會將這份清單限制在與新叢集位於相同Google Cloud 專案和區域的金鑰。
如要使用不在這份清單中的金鑰,請按照下列步驟操作:
- 按一下「找不到金鑰嗎?輸入金鑰資源名稱。
- 在「Key resource name」(金鑰資源名稱) 欄位中輸入資源名稱。
- 按一下 [儲存]。
- 按一下「繼續」。
如要搭配使用 CMEK 金鑰和 AlloyDB,必須完成一些額外設定。詳情請參閱「使用 CMEK」。
如果相關聯的主要執行個體是以 CMEK 金鑰加密,次要叢集也必須以 CMEK 金鑰加密。
設定次要執行個體。在「Instance ID」(執行個體 ID) 欄位中,輸入次要執行個體的資源 ID。資源 ID 在叢集內不得重複。
點選「建立叢集」。
gcloud
如要使用 gcloud CLI,您可以安裝並初始化 Google Cloud CLI,也可以使用 Cloud Shell。
使用 gcloud alloydb clusters create-secondary 指令。
gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \ --region=REGION_ID \ --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/PRIMARY_CLUSTER_IDgcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \ --cluster=SECONDARY_CLUSTER_ID \ --region=REGION_ID
更改下列內容:
SECONDARY_CLUSTER_ID:要建立並與次要執行個體建立關聯的次要叢集 ID。SECONDARY_INSTANCE_ID:要建立的次要執行個體 ID。REGION_ID:次要叢集區域的 ID,例如us-central1。PROJECT_ID:主要叢集專案的 ID。LOCATION_ID:主要叢集所在的位置,例如us-central1。PRIMARY_CLUSTER_ID:與次要叢集相關聯的主要叢集 ID。
如要停用次要叢集的自動備份功能,請將 --no-enable-automated-backup 旗標傳遞至 gcloud alloydb clusters create-secondary 指令。
如要建立已啟用 Private Service Connect 的次要執行個體,請新增 --allowed-psc-projects 旗標,設定以半形逗號分隔的專案 ID 或專案編號清單,指定要允許存取執行個體的專案,例如 my-project-1、12345 和 my-project-n。
gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \ --region=REGION_ID \ --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/PRIMARY_CLUSTER_IDgcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \ --cluster=SECONDARY_CLUSTER_ID \ --region=REGION_ID \ --allowed-psc-projects=ALLOWED_PSC_PROJECTS
更改下列內容:
ALLOWED_PSC_PROJECTS(選用):以半形逗號分隔的專案 ID 或專案編號清單,用於允許存取執行個體,例如my-project-1、12345和my-project-n。如果叢集使用 Private Service Connect 連線至執行個體,您必須設定允許的專案或編號清單。
如要為已啟用公開 IP 的叢集建立次要執行個體,請新增 --assign-inbound-public-ip=ASSIGN_IPV4 參數。
gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
--cluster=SECONDARY_CLUSTER_ID \
--region=REGION_ID \
--assign-inbound-public-ip=ASSIGN_IPV4您可以選擇將以半形逗號分隔的 CIDR 區塊清單 (例如 64.233.160.0/16) 傳遞至 --authorized-external-networks 參數,在執行個體上設定授權的外部網路。
查看次要叢集
如要查看 AlloyDB 次要叢集的詳細資訊,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下次要叢集。
在「Overview」(總覽) 頁面中,查看次要叢集的所有詳細資料。
更新次要執行個體
您可以更新次要執行個體,新增、修改或刪除資料庫旗標。您也可以調整次要執行個體的機型。
設定次要執行個體的資料庫旗標
如要新增、修改或刪除資料庫旗標,請完成下列步驟:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下要修改的次要叢集。
在「Overview」(總覽) 頁面中,前往「Instances in your cluster」(叢集中的執行個體),選取次要執行個體,然後按一下「Edit secondary」(編輯次要執行個體)。
新增、修改或刪除執行個體的資料庫旗標:
新增旗標
- 如要為執行個體新增資料庫旗標,請按一下「新增旗標」。
- 從「New database flag」(新增資料庫旗標) 清單中選取旗標。
- 提供旗標值。
- 按一下「完成」。
修改旗標
- 如要修改執行個體中的資料庫旗標,請展開資料庫旗標,然後在「Edit database flag」(編輯資料庫旗標) 區段中修改現有旗標的值。
- 按一下「完成」。
刪除標記
- 如要從執行個體中刪除資料庫旗標,請選取旗標,然後按一下刪除圖示。
- 按一下「完成」。
按一下「更新次要網域」。
gcloud
使用 gcloud alloydb instances update 指令,變更次要執行個體的資料庫旗標。
gcloud alloydb instances update SECONDARY_INSTANCE_ID \
--database-flags FLAGS_LIST \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID更改下列內容:
SECONDARY_INSTANCE_ID:次要執行個體的 ID。FLAGS_LIST:以半形逗號分隔的一或多個資料庫旗標規格清單。每項規格都包含標記名稱、等號 (=) 和要指派給標記的值。如果資料庫旗標不接受值,請提供旗標名稱,後接等號 (=)。REGION_ID:次要執行個體所在的區域,例如us-central1。CLUSTER_ID:次要執行個體所在的叢集 ID。PROJECT_ID:次要 叢集所在專案的 ID。
調整次要執行個體的機型
如要調整次要執行個體的機型,請完成下列步驟:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下要修改的次要叢集。
在「總覽」頁面中,前往「叢集內的執行個體」部分,然後點選「編輯次要節點」。
請注意,如果頁面回報的叢集狀態為「Maintenance」(維護中),就無法執行這項操作。「Status」(狀態) 變更為「Ready」(就緒) 後,即可再次執行這項操作。
選取機型。
按一下「更新次要網域」。
gcloud
使用 gcloud alloydb instances
update 指令變更次要執行個體的機型。
gcloud alloydb instances update SECONDARY_INSTANCE_ID \
--cpu-count=CPU_COUNT \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID更改下列內容:
SECONDARY_INSTANCE_ID:要更新的次要執行個體 ID。CPU_COUNT:執行個體所需的 vCPU 數量。有效的值包括:2(2 個 vCPU,16 GB RAM)4(4 個 vCPU,32 GB RAM)8(8 個 vCPU,64 GB RAM)16(16 個 vCPU,128 GB RAM)32(32 個 vCPU,256 GB RAM)64(64 個 vCPU,512 GB RAM)96(96 個 vCPU,768 GB RAM)128(128 個 vCPU,864 GB RAM)
REGION_ID:執行個體所在的區域。
CLUSTER_ID:執行個體所在的叢集 ID。
PROJECT_ID:叢集所在專案的 ID。
如果指令傳回的錯誤訊息包含 invalid cluster state MAINTENANCE,表示叢集正在進行例行維護。這會暫時禁止重新設定執行個體。待叢集恢復 READY 狀態後,再次執行指令。
如要查看叢集狀態,請參閱「查看叢集詳細資料」。
將讀取集區執行個體新增至次要叢集
如要將讀取集區執行個體新增至次要叢集,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,點選要新增讀取集區執行個體的次要叢集。
在「總覽」頁面中,前往「叢集中的執行個體」部分,然後點選「新增讀取集區」。
設定讀取集區執行個體:
- 在「Read pool instance ID」(讀取集區執行個體 ID) 欄位中,輸入讀取集區執行個體的 ID。
- 在「Node count」(節點數量) 欄位中,輸入節點數量。讀取集區執行個體中的節點數量,決定了執行個體的整體運算能力。叢集中所有讀取集區執行個體的節點總數上限為 20 個。
- 選取機型。
選用:為執行個體設定自訂旗標。針對每個標記執行下列操作:
- 按一下「新增旗標」。
- 從「New database flag」(新增資料庫旗標) 清單中選取旗標。
- 提供旗標值。
- 按一下「完成」。
按一下「新增讀取集區」。
進階災難復原機制
AlloyDB 支援切換和跨區域容錯移轉,可因應進階災難復原情境:
執行切換
切換功能可讓您反轉主要和次要叢集的角色,不會遺失任何資料。這項作業適用於計畫性遷移、例行維護或災難復原演練。完成切換後,複製方向會對調。
如果您在有多個次要叢集時執行切換,會發生下列變更:
- 接收切換指令的次要叢集會成為主要叢集。
- 先前的主要叢集會變成次要叢集,並從新的主要叢集複製資料。
- 所有其他次要叢集都會切換為從新的主要叢集複製資料。
下圖說明從 us-central1 中的 cluster-1 切換至 us-east4 中的 cluster-2:

圖 2:範例:切換至兩個次要叢集中的其中一個。
執行切換前,請確認主要和次要執行個體所屬的所有區域都已上線,且執行個體處於健康狀態。詳情請參閱「使用 AlloyDB 系統深入分析資訊主頁監控執行個體」。
如要執行切換,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下要切換為主要叢集的次要叢集。
在「總覽」頁面,點選「切換」。
在顯示的對話方塊中,輸入次要叢集 ID,確認要切換叢集。
按一下「Switchover」(切換)。
叢集切換後,「總覽」頁面上的「類型:次要叢集」會更新為
「叢集類型:主要叢集」和「叢集類型:次要叢集」。
gcloud
使用 gcloud alloydb clusters switchover 指令:
gcloud alloydb clusters switchover SECONDARY_CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID更改下列內容:
SECONDARY_CLUSTER_ID:要切換的次要叢集 ID。REGION_ID:次要叢集區域的 ID,例如us-central1。PROJECT_ID:次要叢集的專案 ID。
選用:驗證複製狀態
為確保切換作業快速完成且不會遺失任何資料,請確認次要叢集已套用從主要叢集收到的所有交易:
- 停止所有寫入主要叢集的作業。
請完成下列步驟,檢查次要叢集的複製狀態:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集清單中,按一下要切換的次要叢集名稱。
在叢集詳細資料頁面,按一下「監控」。
在「Monitoring」(監控) 清單中,選取次要執行個體。清單中會顯示為 「Secondary: INSTANCE_NAME」。
在指標清單中,找到「從主要執行個體複製時的延遲時間」圖表。
確認圖表顯示的延遲時間極短。
0的延遲值最理想。如果延遲時間超過0,切換作業可能需要較長時間才能完成,因為系統會套用剩餘的交易。在指標清單中,找出「Replication status」(複製狀態) 圖表。
確認圖表中所有節點的值都是
streaming。
升級次要叢集
次要叢集升級後,會成為具備完整讀寫功能的獨立主要叢集。這項作業主要用於災難復原,在託管主要叢集的區域無法使用時執行。
根據預設,升級後,次要叢集會成為獨立的主要叢集。不過,您可以選擇啟用跨區域容錯移轉 (預先發布版),自動重新建立原始主要執行個體。跨區域容錯移轉僅適用於具有單一主要叢集和單一次要叢集的拓撲。
如要將次要叢集升級為主要叢集,或視需要新增容錯移轉自動化調度管理,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下要升級為主要叢集的次要叢集。
在「總覽」頁面中,按一下「升級叢集」。
在顯示的對話方塊中,輸入次要叢集 ID,確認要升級叢集。
點選「升級」。
叢集升級後,「總覽」頁面的「類型:次要叢集 (高可用性)」欄位會更新為「類型:高可用性叢集 (具備讀取集區)」。
gcloud
如要將次要叢集升級為獨立的主要叢集,請使用 gcloud alloydb clusters promote 指令:
gcloud alloydb clusters promote SECONDARY_CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID如要透過容錯移轉自動調度管理 (預先發布版) 執行升級作業,請新增選用的 --failover 旗標。系統會自動將原始主要叢集重新建立為次要叢集,並更新相關聯的端點,將流量轉送至新的主要叢集。
gcloud beta alloydb clusters promote SECONDARY_CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID \
--failover更改下列內容:
SECONDARY_CLUSTER_ID:要升級的次要叢集 ID。REGION_ID:次要叢集區域的 ID,例如us-central1。PROJECT_ID:次要叢集的專案 ID。
使用寫入端點,避免腦裂
如要進一步簡化跨區域容錯移轉期間的災難復原工作流程,Google 建議您使用寫入端點管理資料庫連線,連線至叢集。
執行跨區域容錯移轉時,AlloyDB 會自動更新寫入端點的 DNS 記錄,指向新的主要叢集。這可確保新的寫入流量會從原始主要執行個體導向新的主要執行個體。
在跨區域容錯移轉期間使用寫入端點前,請考量下列事項:
- 立即更新 DNS:寫入端點的 DNS 記錄會在升級後立即更新。
- 中繼資料延遲更新:寫入端點的中繼資料可能仍會顯示原始主要叢集的位址,直到原始主要叢集區域復原為止。
跨區域容錯移轉期間的資料復原
執行跨區域容錯移轉時,AlloyDB 會自動備份原始主要叢集,再將其重新建立為次要叢集。如果原始主要叢集和新的主要叢集同時接受寫入作業,就會發生腦裂情況。為避免這種情況,系統會在備份前停止寫入原始主要執行個體。如果容錯移轉期間發生延遲,導致交易未複製到次要叢集,您可以使用這個備份復原交易。
這項備份作業會在容錯移轉自動化調度管理過程中自動建立,與定期排定的自動備份和隨選備份不同。您可以使用這項功能建立新的臨時叢集,並手動協調任何遺漏的資料。
這個備份會擷取原始主要叢集在停止前接受的寫入作業,但不會自動將寫入作業合併至新的主要叢集。