如要在切換、跨區域容錯移轉、備份還原或遷移期間,將應用程式與 AlloyDB for PostgreSQL 主要執行個體的特定 IP 位址或統一資源 ID (URI) 分離,您可以設定寫入端點。
端點是 AlloyDB 資源,提供穩定的網域名稱系統 (DNS) 名稱,可讓應用程式連線至 AlloyDB 執行個體。這種抽象化機制可簡化作業事件 (例如災難復原、備份還原或遷移) 期間的連線管理,因為您可以將端點的 DNS 名稱重新導向至其他執行個體,而不必變更應用程式設定。
AlloyDB 端點支援 WRITE_ENDPOINT 類型。寫入端點會將流量導向單一 AlloyDB 主要執行個體,並處理讀取和寫入流量。
雖然 DNS 名稱是全域資源,但端點資源本身是區域性資源。即便如此,每個端點仍可連結至全球各地的執行個體,且其 DNS 名稱可從任何位置解析。
使用端點的好處
使用寫入端點有下列好處:
- 簡化災難復原:如果您切換或跨區域容錯移轉至次要叢集,AlloyDB 會自動更新端點,指向新的主要執行個體。應用程式接著可以使用相同的端點 DNS 名稱重新連線,縮短復原時間目標 (RTO)。
- 簡化備份復原作業:從備份還原執行個體時,AlloyDB 會建立具有新 IP 位址的新執行個體。您可以更新端點,指向新還原的執行個體。這項功能可讓應用程式在不變更設定的情況下恢復運作。
- 遷移更輕鬆:遷移期間,您可以將端點從來源資料庫切換至 AlloyDB 執行個體,盡可能減少應用程式中斷。
限制
- 端點僅支援設為使用私人服務存取權 (PSA) 的執行個體。端點不支援設為使用 Private Service Connect (PSC) 的執行個體。
- 寫入端點不支援 AlloyDB 語言連接器和 AlloyDB Auth Proxy。
- 不支援對指向相同目標執行個體的端點,同時執行修改作業 (例如同時更新,或同時執行更新和刪除作業),否則可能導致失敗。
事前準備
- 安裝並初始化 Google Cloud CLI。
- 啟用 Cloud DNS API。
- 請確認您有現成的 AlloyDB 執行個體,可做為端點的目標。
如要取得管理端點所需的權限,請要求管理員授予您專案的 AlloyDB 管理員 (
roles/alloydb.admin) Identity and Access Management (IAM) 角色。這個預先定義的角色具備管理端點所需的權限。您或許還可透過自訂角色或其他預先定義的角色取得這些權限。所需特定權限如下:
alloydb.endpoints.createalloydb.endpoints.updatealloydb.endpoints.getalloydb.endpoints.listalloydb.endpoints.delete
詳情請參閱「AlloyDB IAM 角色和權限」。
您可以使用 Google Cloud CLI 建立及管理寫入端點。
建立端點
如要建立寫入端點,請使用 Google Cloud CLI。端點類型必須是 WRITE_ENDPOINT,且必須指定單一主要執行個體。
控制台
前往 Google Cloud 控制台的「Endpoints」頁面。
按一下「Create endpoint」(建立端點)。
在「Endpoint name」(端點名稱) 欄位中,輸入端點 ID。只能包含小寫英文字母 (a 至 z)、數字和連字號,開頭須為小寫英文字母,結尾須為小寫英文字母或數字。
選擇「Region」(區域)。
在「Endpoint type」(端點類型) 部分,選取「Write」(寫入)。
在「Target instance」(目標執行個體) 欄位中,選取這個端點應指向的主要執行個體。
點選「建立」。
gcloud
gcloud beta alloydb endpoints create ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--endpoint-type=ENDPOINT_TYPE \
--target-instances=TARGET_INSTANCE_NAME
更改下列內容:
ENDPOINT_ID:端點的專屬 ID。這個 ID 在指定的專案和位置中不得重複。PROJECT_ID:您的 Google Cloud 專案 ID。REGION_ID:要建立端點的區域 ID,例如us-central1。ENDPOINT_TYPE:端點資源的類型。僅支援WRITE_ENDPOINT。TARGET_INSTANCE_NAME:端點指向的 AlloyDB for PostgreSQL 執行個體完整資源名稱。執行個體的完整資源路徑格式如下:projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER/instances/$INSTANCE。
使用端點連線至執行個體
如要使用端點連線至 AlloyDB 執行個體,您必須先取得與端點相關聯、自動產生的 DNS 名稱。
取得 DNS 名稱
您可以使用 Google Cloud CLI 查看端點的 DNS 名稱。
控制台
前往 Google Cloud 控制台的「Endpoints」頁面。
找出要連線的端點,然後複製「DNS name」(DNS 名稱) 欄中的值。
gcloud
使用
gcloud beta alloydb endpoints describe指令:gcloud beta alloydb endpoints describe ENDPOINT_ID \ --project=PROJECT_ID \ --region=REGION_ID更改下列內容:
ENDPOINT_ID:端點 IDPROJECT_ID:您的 Google Cloud 專案 IDREGION_ID:端點所在區域的 ID
在指令輸出內容中,找出
dnsName欄位並複製其值。
使用 psql 連線
取得 DNS 名稱後,即可在連線字串或用戶端工具中,將其做為主機使用。舉例來說,如要使用 psql 用戶端連線,請執行下列指令:
psql -h DNS_NAME -U USERNAME -d DATABASE_NAME
更改下列內容:
DNS_NAME:端點的 DNS 名稱USERNAME:連線時使用的資料庫使用者DATABASE_NAME:要連線的資料庫名稱
如要進一步瞭解如何使用 psql,請參閱「使用 psql 用戶端連線」。
更新端點
如要變更端點指向的執行個體 (例如在還原作業後),請使用下列指令:
控制台
前往 Google Cloud 控制台的「Endpoints」頁面。
在要更新的端點資料列中,按一下 「Actions」(動作),然後選取「Edit」(編輯)。
在「Target instance」(目標執行個體) 欄位中,選取這個端點應指向的新主要執行個體。
按一下「Update」。
gcloud
gcloud beta alloydb endpoints update ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--target-instances=NEW_TARGET_INSTANCE_NAME
更改下列內容:
ENDPOINT_ID:要更新的端點 IDPROJECT_ID:您的 Google Cloud 專案 IDREGION_ID:端點所在區域的 IDNEW_TARGET_INSTANCE_NAME:新目標執行個體的完整資源名稱
列出端點
如要列出指定專案和區域中的所有端點,請使用下列指令:
控制台
前往 Google Cloud 控制台的「Endpoints」頁面。
頁面會列出目前專案中的所有端點。
gcloud
gcloud beta alloydb endpoints list --project=PROJECT_ID \
--region=REGION_ID
更改下列內容:
PROJECT_ID:您的 Google Cloud 專案 IDREGION_ID:端點所在區域的 ID
查看端點詳細資料
如要查看特定端點的詳細資料,請使用下列 Google Cloud CLI 指令:
gcloud
gcloud beta alloydb endpoints describe ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID
更改下列內容:
ENDPOINT_ID:要說明的端點 IDPROJECT_ID:您的 Google Cloud 專案 IDREGION_ID:端點所在區域的 ID
在 Google Cloud 控制台,您可以在「Endpoints」(端點) 頁面查看端點詳細資料。
刪除端點
如要刪除端點,請使用下列指令:
控制台
前往 Google Cloud 控制台的「Endpoints」頁面。
在要刪除的端點資料列中,按一下 「Actions」(動作),然後選取「Delete」(刪除)。
輸入端點 ID,然後按一下「刪除」確認操作。
gcloud
gcloud beta alloydb endpoints delete ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID
更改下列內容:
ENDPOINT_ID:要刪除的端點 IDPROJECT_ID:您的 Google Cloud 專案 IDREGION_ID:端點所在區域的 ID
切換或跨區域容錯移轉期間的寫入端點行為
雖然端點的 DNS 名稱在建立時會解析為特定執行個體的 IP,但這些端點是動態的。發生跨區域複製活動時,例如切換或跨區域容錯移轉 (預先發布版),AlloyDB 寫入端點會持續連線,不需手動介入。次要叢集升級為新的主要叢集時,端點會自動更新 DNS 記錄,指向新的主要執行個體。這種行為可免除手動重新設定應用程式連線字串,大幅降低作業複雜度,並盡可能縮短停機時間,以符合復原時間目標 (RTO)。
作業和 DNS 傳播完成後,應用程式就能使用相同的端點 DNS 名稱,重新連線至新的主要執行個體。
避免在容錯移轉期間發生寫入衝突
在跨區域容錯移轉期間使用寫入端點,可自動將新的寫入流量從原始主要叢集導向新叢集,避免寫入衝突。如要進一步瞭解容錯移轉期間的寫入端點行為,請參閱「使用寫入端點避免腦裂」。
後續步驟
- 進一步瞭解如何連線至 AlloyDB 執行個體。