遷移至現有的目的地執行個體

本頁面說明如何將資料庫遷移至直接在 Cloud SQL 中建立的現有 PostgreSQL 適用的 Cloud SQL 執行個體。

如果目的地執行個體是由其他團隊管理,或您需要在資料庫遷移服務以外建立執行個體 (例如使用 Terraform、需要特定自訂旗標,或需要進階網路拓撲),這個路徑就非常實用。如果您的遷移作業有其他需求,請考慮採用其他遷移流程。詳情請參閱「 開始遷移 PostgreSQL」。

遷移作業大致包含下列步驟:

  1. 設定來源資料庫,允許資料庫遷移服務將資料移至新資料庫。
  2. 設定來源 PostgreSQL 執行個體的網路連線。
  3. 準備及設定現有的目的地 Cloud SQL 執行個體。
  4. 建立來源連線設定檔和遷移工作。
  5. 啟動並監控遷移工作。
  6. 升級遷移工作,並將應用程式移至新資料庫。

費用

在本文件中,您會使用下列Google Cloud計費元件:

您可以使用 Pricing Calculator,根據預測用量估算費用。

事前準備

  1. 確認這個遷移路徑是否能完全支援您的情境。請參閱下列頁面:
  2. 請考量要在哪個區域建立目的地資料庫。資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源和目的地連線設定檔、遷移工作、目的地資料庫、轉換工作區) 都必須儲存在單一區域。
  3. 在 Google Cloud 控制台的專案選取器頁面中,選取或 建立 Google Cloud 專案。

    前往專案選取器

  4. 啟用資料庫遷移服務和 Cloud SQL Admin API。

    啟用 API

必要的角色

如要取得使用資料庫遷移服務執行同質 PostgreSQL 遷移作業所需的權限,請要求管理員授予您專案的必要 IAM 角色:

如要進一步瞭解如何授予角色,請參閱 Identity and Access Management 說明文件中的「 管理存取權」。

這些預先定義的角色具備必要權限,可透過資料庫遷移服務執行同質 PostgreSQL 遷移作業。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要使用資料庫遷移服務執行同質 PostgreSQL 遷移作業,必須具備下列權限:

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.delete
  • cloudsql.operations.get
  • cloudsql.users.list
  • cloudsql.users.get
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

您或許還可透過 自訂角色或其他 預先定義的角色取得這些權限。

準備來源資料庫

如要準備要遷移的來源資料,請按照下列步驟操作:

  1. 選擇並設定來源網路連線方式。
  2. 設定來源資料庫執行個體。大致步驟如下:
    1. 在來源資料庫和所有要遷移的資料庫,安裝 pglogical PostgreSQL 擴充功能 (2.2.1 以上版本)。
    2. 設定 PostgreSQL 參數:設定 wal_level = logical,並確保 max_replication_slots、max_wal_senders 和 max_worker_processes 的值足夠。
    3. 將複製權限授予遷移使用者,並設定 pg_hba.conf,允許目的地 Cloud SQL 執行個體連線。

    如需詳細操作說明,請參閱「 設定來源資料庫」。

  3. 建立來源連線設定檔。

準備及設定目的地執行個體

如要遷移至現有的 Cloud SQL 執行個體 (例如由其他團隊預先佈建或透過 Terraform 管理的執行個體),請先確認該執行個體符合所有資料庫遷移服務必要條件,再建立遷移工作:

  1. 執行個體 readiness 和資料狀態:
    • 目的地執行個體必須是獨立執行個體 (非副本),且處於 RUNNABLE 狀態。
    • 執行個體必須與遷移工作和連線設定檔位於相同的 Google Cloud 區域。
    • 執行個體一次只能與一項有效的遷移工作建立關聯。
    • 目的地執行個體不得包含現有使用者資料、使用者定義的資料表或非系統資料庫。如果執行個體上有現有的使用者資料,遷移工作驗證就會失敗。詳情請參閱「 遷移至現有目的地執行個體的限制」。如有需要,請 清除目的地執行個體中的現有資料。
  2. 資料庫旗標設定:在 PostgreSQL 適用的 Cloud SQL 目的地執行個體上啟用 cloudsql.enable_pglogical 旗標。這個旗標是邏輯複製功能的必要項目。如要進一步瞭解如何設定旗標,請參閱「 設定資料庫旗標」。
  3. 資料庫使用者憑證和權限:確認目的地執行個體具備必要的管理資料庫使用者帳戶 (例如預設 postgres 使用者,或具備 cloudsqlsuperuser 角色的專用遷移使用者),以便管理資料庫和角色。您可以使用標準psql指令或透過 Google Cloud 控制台,建立及管理資料庫使用者。詳情請參閱 Cloud SQL 說明文件中的「 管理使用者」一文。
  4. 網路連線需求:請根據所選連線方式,確認目的地執行個體的網路設定正確,可與來源資料庫通訊:
    • Private Service Connect:如果目的地執行個體已啟用 Private Service Connect,則必須設定 Private Service Connect 傳出網路連結。請參閱 Cloud SQL 說明文件中的「 Private Service Connect 傳出連線」。
    • 虛擬私有雲對等互連 (私人服務存取權 / 私人 IP):目的地執行個體必須在虛擬私有雲網路中啟用私人 IP,該網路會與來源資料庫對等互連或轉送至來源資料庫。請參閱「 設定私人 IP」。
    • 公開 IP 許可清單:如果使用公開 IP 連線,請務必在目的地執行個體啟用公開 IP,並在來源防火牆中,將執行個體傳出 IP 位址 (如果執行個體設為高可用性,則包括主要和次要傳出 IP) 加入許可清單。請參閱「 為公開 IP 授權網路」。
  5. 執行個體降級通知:
    • 如果是標準 PostgreSQL 遷移作業,資料庫遷移服務會降級現有的獨立目的地執行個體,將其設為來源資料庫的外部副本。在 Google Cloud 控制台建立遷移工作時,您必須輸入目的地執行個體 ID,確認這項降級作業。
    • 降級執行個體不會將 PostgreSQL 適用的 Cloud SQL 資料庫設為唯讀模式,但您必須避免對參與遷移作業的資料表或資料庫執行寫入作業,以免發生複製衝突。
    • 在您升級遷移工作之前,系統會暫停自動備份、時間點復原 (PITR) 和建立 Cloud SQL 唯讀副本。詳情請參閱「 遷移至現有目的地執行個體的限制」。
    • 如果您使用基礎架構即程式碼 (例如 Terraform) 管理目的地執行個體,資料庫遷移服務會在遷移期間修改備份和復原設定。如需處理 Terraform 設定偏移的指引,請參閱「 診斷問題」。

建立並執行遷移工作

如要設定及執行遷移作業,請按照下列步驟操作:

  1. 選用:如要自行管理遷移工作的憑證或加密金鑰,請 準備必要的加密金鑰。
  2. 為現有目的地執行個體建立及執行遷移工作。

    您可以使用資料庫遷移服務觀測功能,監控遷移進度和目的地執行個體健康狀態。請參閱「 遷移工作指標」。

完成遷移作業

當您決定將應用程式切換至新的 PostgreSQL 適用的 Cloud SQL 執行個體時,請按照下列步驟完成遷移作業:

  1. 選用: 設定串連唯讀副本。如要使用串連唯讀副本,可以在遷移工作進入 CDC 階段時設定。
  2. 停止來源資料庫的所有寫入作業。您可以將其切換為唯讀模式,以保留作業功能。
  3. 升級遷移工作。
  4. 選用步驟: 驗證遷移資料的完整性。
  5. 如果您使用基礎架構即程式碼 (例如 Terraform) 管理目的地資料庫,請在升級後重新套用設定,協調資料庫遷移服務在遷移期間調整的任何設定。

後續步驟

進一步瞭解 PostgreSQL 適用的 Cloud SQL Google Cloud 功能。請參閱「 PostgreSQL 適用的 Cloud SQL 功能」。