本頁面說明如何將資料庫遷移至直接在 Cloud SQL 中建立的現有 PostgreSQL 適用的 Cloud SQL 執行個體。
如果目的地執行個體是由其他團隊管理,或您需要在資料庫遷移服務以外建立執行個體 (例如使用 Terraform、需要特定自訂旗標,或需要進階網路拓撲),這個路徑就非常實用。如果您的遷移作業有其他需求,請考慮採用其他遷移流程。詳情請參閱「 開始遷移 PostgreSQL」。
遷移作業大致包含下列步驟:
- 設定來源資料庫,允許資料庫遷移服務將資料移至新資料庫。
- 設定來源 PostgreSQL 執行個體的網路連線。
- 準備及設定現有的目的地 Cloud SQL 執行個體。
- 建立來源連線設定檔和遷移工作。
- 啟動並監控遷移工作。
- 升級遷移工作,並將應用程式移至新資料庫。
費用
在本文件中,您會使用下列Google Cloud計費元件:
- Cloud SQL (請參閱 Cloud SQL 定價)。
- 如果用於儲存客戶自行管理的加密金鑰 (CMEK):Cloud Storage (請參閱 Cloud Storage 定價)。
您可以使用 Pricing Calculator,根據預測用量估算費用。
事前準備
- 確認這個遷移路徑是否能完全支援您的情境。請參閱下列頁面:
- 「情境總覽」頁面的「 支援的來源和目的地」部分,列出所有支援的來源和目的地版本。
- 「現有執行個體的已知限制」一節說明瞭相關限制,包括現有目的地執行個體不得包含現有的使用者定義資料。
- 請考量要在哪個區域建立目的地資料庫。資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源和目的地連線設定檔、遷移工作、目的地資料庫、轉換工作區) 都必須儲存在單一區域。
- 在 Google Cloud 控制台的專案選取器頁面中,選取或 建立 Google Cloud 專案。
- 啟用資料庫遷移服務和 Cloud SQL Admin API。
必要的角色
如要取得使用資料庫遷移服務執行同質 PostgreSQL 遷移作業所需的權限,請要求管理員授予您專案的必要 IAM 角色:
-
資料庫遷移管理員 (
roles/datamigration.admin) -
Cloud SQL 編輯者 (
roles/cloudsql.editor) - 如需在資料庫遷移服務以外建立或設定目的地執行個體,您也需要
Cloud SQL 管理員 (
roles/cloudsql.admin) 角色 -
Cloud SQL Studio 使用者 (
roles/cloudsql.studioUser)
如要進一步瞭解如何授予角色,請參閱 Identity and Access Management 說明文件中的「 管理存取權」。
這些預先定義的角色具備必要權限,可透過資料庫遷移服務執行同質 PostgreSQL 遷移作業。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要使用資料庫遷移服務執行同質 PostgreSQL 遷移作業,必須具備下列權限:
datamigration.*cloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.updatecloudsql.instances.deletecloudsql.operations.getcloudsql.users.listcloudsql.users.getcloudsql.users.createcloudsql.users.updatecloudsql.users.delete
您或許還可透過 自訂角色或其他 預先定義的角色取得這些權限。
準備來源資料庫
如要準備要遷移的來源資料,請按照下列步驟操作:
- 選擇並設定來源網路連線方式。
- 設定來源資料庫執行個體。大致步驟如下:
- 在來源資料庫和所有要遷移的資料庫,安裝
pglogicalPostgreSQL 擴充功能 (2.2.1 以上版本)。 - 設定 PostgreSQL 參數:設定
wal_level = logical,並確保max_replication_slots、max_wal_senders和max_worker_processes的值足夠。 - 將複製權限授予遷移使用者,並設定
pg_hba.conf,允許目的地 Cloud SQL 執行個體連線。
如需詳細操作說明,請參閱「 設定來源資料庫」。
- 在來源資料庫和所有要遷移的資料庫,安裝
- 建立來源連線設定檔。
準備及設定目的地執行個體
如要遷移至現有的 Cloud SQL 執行個體 (例如由其他團隊預先佈建或透過 Terraform 管理的執行個體),請先確認該執行個體符合所有資料庫遷移服務必要條件,再建立遷移工作:
- 執行個體 readiness 和資料狀態:
- 目的地執行個體必須是獨立執行個體 (非副本),且處於
RUNNABLE狀態。 - 執行個體必須與遷移工作和連線設定檔位於相同的 Google Cloud 區域。
- 執行個體一次只能與一項有效的遷移工作建立關聯。
- 目的地執行個體不得包含現有使用者資料、使用者定義的資料表或非系統資料庫。如果執行個體上有現有的使用者資料,遷移工作驗證就會失敗。詳情請參閱「 遷移至現有目的地執行個體的限制」。如有需要,請 清除目的地執行個體中的現有資料。
- 目的地執行個體必須是獨立執行個體 (非副本),且處於
- 資料庫旗標設定:在 PostgreSQL 適用的 Cloud SQL 目的地執行個體上啟用
cloudsql.enable_pglogical旗標。這個旗標是邏輯複製功能的必要項目。如要進一步瞭解如何設定旗標,請參閱「 設定資料庫旗標」。 - 資料庫使用者憑證和權限:確認目的地執行個體具備必要的管理資料庫使用者帳戶 (例如預設
postgres使用者,或具備cloudsqlsuperuser角色的專用遷移使用者),以便管理資料庫和角色。您可以使用標準psql指令或透過 Google Cloud 控制台,建立及管理資料庫使用者。詳情請參閱 Cloud SQL 說明文件中的「 管理使用者」一文。 - 網路連線需求:請根據所選連線方式,確認目的地執行個體的網路設定正確,可與來源資料庫通訊:
- Private Service Connect:如果目的地執行個體已啟用 Private Service Connect,則必須設定 Private Service Connect 傳出網路連結。請參閱 Cloud SQL 說明文件中的「 Private Service Connect 傳出連線」。
- 虛擬私有雲對等互連 (私人服務存取權 / 私人 IP):目的地執行個體必須在虛擬私有雲網路中啟用私人 IP,該網路會與來源資料庫對等互連或轉送至來源資料庫。請參閱「 設定私人 IP」。
- 公開 IP 許可清單:如果使用公開 IP 連線,請務必在目的地執行個體啟用公開 IP,並在來源防火牆中,將執行個體傳出 IP 位址 (如果執行個體設為高可用性,則包括主要和次要傳出 IP) 加入許可清單。請參閱「 為公開 IP 授權網路」。
- 執行個體降級通知:
- 如果是標準 PostgreSQL 遷移作業,資料庫遷移服務會降級現有的獨立目的地執行個體,將其設為來源資料庫的外部副本。在 Google Cloud 控制台建立遷移工作時,您必須輸入目的地執行個體 ID,確認這項降級作業。
- 降級執行個體不會將 PostgreSQL 適用的 Cloud SQL 資料庫設為唯讀模式,但您必須避免對參與遷移作業的資料表或資料庫執行寫入作業,以免發生複製衝突。
- 在您升級遷移工作之前,系統會暫停自動備份、時間點復原 (PITR) 和建立 Cloud SQL 唯讀副本。詳情請參閱「 遷移至現有目的地執行個體的限制」。
- 如果您使用基礎架構即程式碼 (例如 Terraform) 管理目的地執行個體,資料庫遷移服務會在遷移期間修改備份和復原設定。如需處理 Terraform 設定偏移的指引,請參閱「 診斷問題」。
建立並執行遷移工作
如要設定及執行遷移作業,請按照下列步驟操作:
- 選用:如要自行管理遷移工作的憑證或加密金鑰,請 準備必要的加密金鑰。
-
為現有目的地執行個體建立及執行遷移工作。
您可以使用資料庫遷移服務觀測功能,監控遷移進度和目的地執行個體健康狀態。請參閱「 遷移工作指標」。
完成遷移作業
當您決定將應用程式切換至新的 PostgreSQL 適用的 Cloud SQL 執行個體時,請按照下列步驟完成遷移作業:
- 選用: 設定串連唯讀副本。如要使用串連唯讀副本,可以在遷移工作進入 CDC 階段時設定。
- 停止來源資料庫的所有寫入作業。您可以將其切換為唯讀模式,以保留作業功能。
- 升級遷移工作。
- 選用步驟: 驗證遷移資料的完整性。
- 如果您使用基礎架構即程式碼 (例如 Terraform) 管理目的地資料庫,請在升級後重新套用設定,協調資料庫遷移服務在遷移期間調整的任何設定。
後續步驟
進一步瞭解 PostgreSQL 適用的 Cloud SQL Google Cloud 功能。請參閱「 PostgreSQL 適用的 Cloud SQL 功能」。