本頁面說明如何將資料庫遷移至直接在 AlloyDB for PostgreSQL 建立的現有 AlloyDB for PostgreSQL 叢集。
如果目的地叢集是由其他團隊管理,或您需要在資料庫遷移服務以外建立叢集,以便設定特定自訂旗標、預先分配的 IP 範圍或複雜的虛擬私有雲網路拓撲,這個路徑就非常實用。如果遷移作業有其他需求,請考慮採用其他遷移流程。詳情請參閱「 開始將 PostgreSQL 遷移至 AlloyDB for PostgreSQL」。
連續遷移作業大致包含下列步驟:
- 設定來源資料庫,允許資料庫遷移服務複製資料。
- 設定來源資料庫與 Google Cloud之間的網路連線。
- 準備及設定現有的 AlloyDB for PostgreSQL 目的地叢集。
- 建立來源連線設定檔和連續遷移工作。
- 啟動並監控連續遷移工作。
- 升級遷移工作,並將應用程式移至新資料庫。
費用
在本文件中,您會使用下列Google Cloud計費元件:
- AlloyDB for PostgreSQL (請參閱 AlloyDB for PostgreSQL 定價)。
- 如果用於儲存客戶自行管理的加密金鑰 (CMEK):Cloud Storage (請參閱 Cloud Storage 定價)。
您可以使用 Pricing Calculator,根據預測用量估算費用。
事前準備
- 請確認這個遷移路徑是否能完全支援您的情境。 請參閱下列頁面:
- 請考量要在哪個區域建立目的地叢集。資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源連線設定檔、遷移工作和目的地叢集) 都必須位於單一 Google Cloud 區域。
- 在 Google Cloud 控制台的專案選取器頁面,選取或 建立 Google Cloud 專案。
- 啟用資料庫遷移服務、AlloyDB for PostgreSQL 和 Compute Engine API。
必要的角色
如要取得所需權限,透過資料庫遷移服務,將 PostgreSQL 同質遷移至 AlloyDB for PostgreSQL,請要求管理員授予您專案的必要 IAM 角色:
-
資料庫遷移管理員 (
roles/datamigration.admin) -
AlloyDB 管理員 (
roles/alloydb.admin)
如要進一步瞭解如何授予角色,請參閱 Identity and Access Management 說明文件中的「 管理存取權」。
這些預先定義的角色具備必要權限,可使用資料庫遷移服務執行同質 PostgreSQL 遷移作業。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要使用資料庫遷移服務,將同質 PostgreSQL 遷移至現有的 AlloyDB for PostgreSQL 叢集,必須具備下列權限:
datamigration.*alloydb.clusters.getalloydb.clusters.listalloydb.clusters.updatealloydb.instances.getalloydb.instances.listalloydb.instances.updatealloydb.operations.getalloydb.users.listalloydb.users.getalloydb.users.createalloydb.users.update
您或許還可透過 自訂角色或其他 預先定義的角色取得這些權限。
準備來源資料庫
如要準備遷移來源資料庫,請按照下列步驟操作:
- 選擇並設定來源網路連線方式。
- 設定來源資料庫執行個體。大致來說,這包括下列步驟:
- 在來源資料庫和所有要遷移的資料庫,安裝
pglogicalPostgreSQL 擴充功能 (2.2.1 以上版本)。 - 設定 PostgreSQL 參數:設定
wal_level = logical,並確保max_replication_slots、max_wal_senders和max_worker_processes的值適當。 - 將複製權限授予遷移使用者,並設定
pg_hba.conf,允許來自目的地 AlloyDB for PostgreSQL 叢集的連入連線。
如需詳細操作說明,請參閱「 設定來源資料庫」。
- 在來源資料庫和所有要遷移的資料庫,安裝
- 建立來源連線設定檔。
準備及設定目的地叢集
如要遷移至現有的 AlloyDB for PostgreSQL 叢集 (例如由其他團隊預先佈建或透過 Terraform 管理的叢集),請確保叢集符合所有資料庫遷移服務必要條件,再建立遷移工作:
- 叢集準備度和資料狀態:
- 目的地叢集必須處於
RUNNABLE狀態,且須有主要執行個體。 - 叢集必須與遷移工作和連線設定檔位於相同 Google Cloud 區域。
- 叢集一次只能與一項進行中的遷移工作建立關聯。
- 目的地叢集只能包含預設系統資料庫 (
postgres、template0、template1),不得含有使用者資料表。
- 目的地叢集必須處於
- 資料庫旗標設定:在目的地 AlloyDB for PostgreSQL 叢集啟用
alloydb.enable_pglogical旗標。如要解碼及擷取邏輯複製作業,必須設定這個旗標。如需更新旗標的操作說明,請參閱 AlloyDB for PostgreSQL 說明文件中的「 設定資料庫旗標」。 - 資料庫使用者憑證和權限:
請確認目的地叢集有管理員使用者帳戶
postgres(或具備alloydbsuperuser角色的專用遷移帳戶)。資料庫遷移服務會以管理員權限連線至目的地,管理複製訂閱者及同步處理結構定義。 - 網路連線需求:請根據所選連線方式,確認目的地叢集的網路設定正確,可與來源資料庫通訊:
- Private Service Connect:如果目的地叢集已啟用 Private Service Connect,請確認叢集已設定適當的 Private Service Connect 網路連結和轉送,可連至來源網路。詳情請參閱 AlloyDB for PostgreSQL 說明文件中的「 設定 Private Service Connect」。
- 虛擬私有雲對接 (私人服務存取權/私人 IP):目的地叢集必須在虛擬私有雲網路設定私人服務存取權,該網路會對接或轉送至來源資料庫 (例如使用 Cloud VPN 或 Cloud Interconnect)。詳情請參閱 AlloyDB for PostgreSQL 說明文件中的「 設定私人服務存取權」。
- 公開 IP 許可清單:如果來源資料庫可透過公開網際網路存取,請確認來源防火牆允許來自目的地 AlloyDB for PostgreSQL 主要執行個體傳出 IP 位址的連入連線。
- 反向 SSH 通道或 TCP Proxy VM:如果來源資料庫位於 Google Cloud 外部,且沒有直接私人對等互連,請確認中繼 Compute Engine VM (堡壘主機或 TCP Proxy) 部署在目的地叢集虛擬私有雲網路可連線的子網路中。詳情請參閱「 網路方法」。
- 主要執行個體降級和寫入鎖定通知:
- 資料庫遷移服務會將現有的目的地主要執行個體降級,在遷移過程中做為外部複製訂閱者。在 Google Cloud 控制台設定遷移工作時,您必須輸入目的地叢集 ID,確認這項降級作業。
- 降級主要執行個體不會將資料庫設為嚴格唯讀模式,但您必須避免對參與遷移的資料表或資料庫執行寫入作業,以免發生複製衝突和資料偏移。詳情請參閱「 遷移至現有目的地叢集的限制」。
建立並執行遷移工作
如要設定並執行連續遷移作業,將資料遷移至現有的目的地叢集,請按照下列步驟操作:
- 選用:如要自行管理遷移工作的憑證或加密金鑰,請 準備必要的加密金鑰。
-
建立並執行現有目的地叢集的遷移工作。
您可以使用資料庫遷移服務觀測功能,監控遷移進度和目的地叢集健康狀態。請參閱「 遷移工作指標」。
完成遷移作業
決定將應用程式流量切換至新的 AlloyDB for PostgreSQL 叢集後,請按照下列步驟完成遷移:
- 停止來源資料庫的所有寫入作業。您可以將來源資料庫設為唯讀模式,這樣就能繼續執行查詢,同時防止新的修改。
- 升級遷移工作。升級遷移工作後,系統會同步處理所有剩餘的 CDC 交易、終止來源的複製作業,並將 AlloyDB for PostgreSQL 主要執行個體升級為獨立且完全運作的主要叢集。
- 選用: 驗證遷移資料的完整性和資料列完整性。
後續步驟
進一步瞭解 AlloyDB for PostgreSQL 的功能和管理功能。請參閱「 AlloyDB for PostgreSQL 總覽」。