使用資料庫遷移服務快速開始遷移

本頁面說明如何執行快速入門遷移作業,將同質 PostgreSQL 遷移至 PostgreSQL 適用的 Cloud SQL。

總覽

快速啟動遷移是輕量級的連續遷移流程,適用於同質的 PostgreSQL 案例。透過快速啟動遷移功能,資料庫遷移服務可以自動設定遷移資料庫所需的一切:網路元件 (網路附件、子網路、私人連線設定)、連線設定檔和遷移工作。

透過快速入門遷移作業,您可以將資料移至現有的 PostgreSQL 適用的 Cloud SQL 執行個體,或在設定遷移作業時建立新的執行個體。快速遷移功能最適合:

  • 基本遷移作業:您不需要精確控管資料轉儲作業的平行處理設定。
  • 將資料庫從一個 Google Cloud 專案遷移至另一個專案。 設定快速啟動遷移時,您可以在與來源不同的專案中建立目的地執行個體,並將資料庫遷移服務設為在另一個專案的虛擬私有雲 (VPC) 網路中建立網路連結和子網路。
  • 從虛擬私有雲 (VPC) 網路中具有私人 IP 位址的來源遷移,例如 Compute Engine 上自行管理的資料庫,或是已啟用私人網路的 PostgreSQL 適用的 Cloud SQL 執行個體。 Google Cloud

    如果來源主機位於外部 Google Cloud ,可能需要額外的網路元件 (例如 Cloud VPN 連線),才能透過虛擬私有雲網路中的私人 IP 位址存取來源。

  • 資料庫連線目前僅支援 Private Service Connect 介面,搭配資料庫遷移服務私人連線設定。來源資料庫必須在虛擬私有雲網路中指派私人 IP。快速入門遷移作業不支援其他同質來源連線方法 (例如公開 IP 許可清單、反向 SSH 通道或虛擬私有雲對等互連)。

如要進一步瞭解快速遷移功能,請參閱資料庫移轉服務說明文件中的「快速遷移」。

事前準備

  1. 確認快速入門遷移是否完全支援您的情境。請參閱資料庫遷移服務說明文件中的「快速啟動遷移限制」。
  2. 登入 Google 帳戶。

    如果沒有帳戶,請 申請新帳戶

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 啟用資料庫遷移服務、Compute Engine、Network Connectivity Center 和 Cloud SQL Admin API。

    啟用 API

必要的角色

如要取得使用資料庫移轉服務,將資料快速移轉至 PostgreSQL 適用的 Cloud SQL 的權限,請要求系統管理員在相關專案中,為參與移轉的帳戶授予必要的 Identity and Access Management (IAM) 角色。如要進一步瞭解如何授予角色,請參閱 IAM 說明文件中的「管理存取權」。

來源專案中的角色和權限

在 Google Cloud 專案中,將下列角色授予特定帳戶,該專案是來源資料庫所在的專案:

  • 執行遷移作業的使用者帳戶: Compute 網路管理員 (roles/compute.networkAdmin)
  • 目的地專案的資料庫遷移服務服務帳戶: Compute 網路檢視者(roles/compute.networkViewer)

    啟用 Database Migration Service API 時,系統會建立 Database Migration Service 服務帳戶。並自動產生相關聯的電子郵件地址。該電子郵件地址無法變更,這個電子郵件地址的格式如下:

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com

這些預先定義的角色具備必要的權限,可透過資料庫遷移服務進行快速入門遷移作業,並在來源資料庫專案中設定連線。如要查看確切的必要權限,請展開「Required permissions (source)」(必要權限 (來源)) 部分:

必要權限 (來源)

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

執行遷移作業的使用者帳戶:

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

目的地專案的資料庫遷移服務服務帳戶: compute.networkAttachments.get

目的地專案中的角色和權限

在 Google Cloud 專案中,將下列角色授予執行遷移作業的使用者帳戶,該專案是目的地資料庫所在的專案:

這些預先定義的角色具備在目的地資料庫專案中設定必要遷移元件的權限,可透過資料庫遷移服務進行快速入門遷移。如要查看確切的必要權限,請展開「Required permissions (destination)」(必要權限 (目的地)) 部分:

必要權限 (目的地)

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

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.delete
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.connect
  • cloudsql.instances.executeSql
  • cloudsql.instances.export
  • cloudsql.instances.import
  • cloudsql.instances.login
  • cloudsql.operations.get
  • cloudsql.users.get
  • cloudsql.users.list
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

設定來源資料庫

如要設定來源 PostgreSQL 資料庫,請按照下列步驟操作:

  1. 在執行個體中建立專用的遷移使用者帳戶。
    • 如果是 PostgreSQL 適用的 Cloud SQL 來源,請參閱 Cloud SQL for PostgreSQL 說明文件中的「建立使用者」。
    • 如需其他來源,請參閱資料庫供應商說明文件,或 PostgreSQL 說明文件中的「 建立及管理使用者」。
  2. 將必要權限指派給專用的遷移使用者帳戶。 針對要遷移的每個資料庫執行下列指令:
    -- Grant the REPLICATION attribute
    ALTER ROLE MIGRATION_USER REPLICATION;
    
    -- Grant database-level permissions.
    -- Repeat for each database you want to migrate.
    GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER;
    
    -- Grant schema-level usage.
    -- Repeat for each schema in each database you want to migrate.
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;

    更改下列內容:

    • MIGRATION_USER,並輸入遷移使用者帳戶的名稱。
    • DATABASE_NAME 替換為要遷移的資料庫名稱。
    • SCHEMA_NAME,並填入要遷移的資料庫結構定義名稱。
  3. 遷移使用者帳戶必須擁有要遷移的資料表。如要授予這個存取層級,請採取下列其中一項做法:
    • SUPERUSER PostgreSQL 角色指派給遷移帳戶。
      • 如果是 PostgreSQL 適用的 Cloud SQL 來源,請指派 cloudsqlsuperuser 角色
      • 如果是其他來源,請指派 SUPERUSER 角色,或參閱資料庫供應商文件,瞭解同等權限組合。
    • 將遷移使用者帳戶新增至擁有資料表的使用者群組。 執行下列指令:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      更改下列內容:

      • TABLE_OWNER_GROUP_NAME,其中包含要遷移的每個資料表所屬使用者群組的名稱。
      • MIGRATION_USER,並輸入遷移使用者帳戶的名稱。
  4. 如果資料表沒有主鍵:在變更資料擷取 (CDC) 階段,資料庫遷移服務不會複製沒有主鍵的資料表 UPDATEDELETE 作業。如要在複寫作業中納入這類作業,請使用 REPLICA IDENTITY 修改沒有主鍵的資料表:
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    更改下列內容:

    • TABLE_NAME 是沒有主鍵的資料表名稱。
    • INDEX_NAME 是可追蹤沒有主鍵的資料表資料列的專屬索引。
  5. 使用資料庫旗標設定複製設定。

    自行管理的來源

    如要儲存資料庫標記的變更,必須完整重新啟動資料庫。 下列範例使用 SQL 查詢來變更旗標值。 如果無法直接執行 SQL 查詢,請參閱供應商文件,瞭解如何變更這些標記。

    1. wal_level 參數設為 logical。執行下列指令:
      ALTER SYSTEM SET wal_level = 'logical';
    2. wal_sender_timeout 參數設為 0。這個值會停用逾時機制,該機制用於終止閒置的複寫連線。執行下列指令:
      ALTER SYSTEM SET wal_sender_timeout = 0;
          
    3. 使用 max_replication_slots 參數設定複製作業時段數量上限。這個參數的值至少必須是每個遷移工作要遷移的資料庫數量,外加一些保留值,用於同步處理資料表。

      舉例來說,如果您要遷移 5 個資料庫,且為來源執行個體建立了 2 項遷移工作,則複製作業運算單元至少須有 5 * 2 = 10 個,加上您已使用的複製作業運算單元數量。

      如要設定這個參數,請執行下列指令:

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
          
      其中 NUMBER_OF_SLOTS 代表複寫時段數量上限。
    4. max_wal_senders 參數設為至少與 max_replication_slots 相同的值,再加上您在執行個體上已使用的傳送者數量。

      舉例來說,如果 max_replication_slots 參數設為 10,且您已使用 2 個傳送者,則同時執行的 WAL 傳送者程序數量為 10 + 2 = 12

      如要設定這個參數,請執行下列指令:

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
          
      其中 NUMBER_OF_SENDERS 代表同時執行的 WAL 傳送器程序數量。
    5. max_worker_processes 至少設為要遷移的資料庫數量,加上執行個體上已使用的 max_worker_processes 數量。如要設定這個參數,請執行下列指令:
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      其中 NUMBER_OF_PROCESSES 代表要遷移的資料庫數量。

    PostgreSQL 適用的 Cloud SQL 來源

    如果是 Cloud SQL 來源,請在 Google Cloud 控制台中設定資料庫旗標。 修改資料庫旗標後,您必須重新啟動執行個體,設定才會生效。如要進一步瞭解如何在 Cloud SQL 中設定資料庫旗標,請參閱 Cloud SQL 說明文件中的「設定資料庫旗標」。

    1. cloudsql.logical_decoding 旗標設為 on
    2. wal_sender_timeout 參數設為 0。 這個值會停用逾時機制,該機制用於終止閒置的複寫連線。
    3. 使用 max_replication_slots 參數設定複製時段數量上限。這個參數的值至少必須等於每個遷移工作要遷移的資料庫數量,外加一些保留值,用於同步處理資料表。

      舉例來說,如果您要遷移 5 個資料庫,且為來源執行個體建立了 2 項遷移工作,則複製作業運算單元至少須有 5 * 2 = 10 個,加上您已使用的複製作業運算單元數量。

    4. max_wal_senders 參數設為至少與 max_replication_slots 相同的值,加上您在執行個體上已使用的傳送者數量。

      舉例來說,如果 max_replication_slots 參數設為 10,且您已使用 2 個傳送者,則同時執行的 WAL 傳送者程序數量為 10 + 2 = 12

    5. max_worker_processes 設為至少要遷移的資料庫數量,加上執行個體上已使用的 max_worker_processes 數量。

建立並執行快速入門遷移作業

使用快速入門移轉功能時,您可以建立新的 Cloud SQL 執行個體並將資料庫遷移至該處,也可以將資料庫遷移至現有的執行個體。

新執行個體的快速遷移作業

如要建立新的 PostgreSQL 適用的 Cloud SQL 執行個體,並立即將資料庫遷移至該處,請按照下列步驟操作:

  1. 前往「Instances」(執行個體) 頁面。

    前往「Instances」(執行個體)

  2. 依序點選「建立執行個體」>「從現有資料庫」
  3. 在「Migrate existing database」(移轉現有資料庫) 視窗中,選取「Quick-start PostgreSQL migration」(快速啟動 PostgreSQL 移轉),然後按一下「Continue」(繼續)

    系統會開啟資料庫遷移服務快速入門遷移表單。

  4. 在「設定遷移作業」部分,執行下列操作:
    1. 從「目的地區域」選單中,選取目的地 PostgreSQL 適用的 Cloud SQL 執行個體所在區域。
    2. 在「遷移作業前置字串」方塊中,輸入易記的字串,這個字串會加到為快速啟動遷移作業建立的所有遷移作業實體名稱中,包括連線設定檔、私人連線設定、網路連結及其子網路,以及遷移工作。
    3. 從「設定類型」選單中,選取下列其中一個選項:
      1. 現有連線設定:如果您已有網路連結和私人連線設定,且使用 Private Service Connect 介面方法,請選取這個選項。如果您先前使用快速入門遷移作業,並想重複使用相同的網路資源,建議採用這個選項。
      2. 新的連線設定:選取這個選項,在來源資料庫虛擬私有雲網路中建立新的網路連結和網路連結子網路。私人連線設定會與目的地執行個體位於同一個專案中。
    4. 按一下「Continue」(繼續)
  5. 在「連結來源」部分,執行下列操作:
    1. 輸入來源資料庫的主機名稱或私有 IP 位址。來源資料庫位址必須可從來源虛擬私有雲網路連線。
    2. 輸入用來存取主機的通訊埠。預設的 PostgreSQL 連接埠為 5432
    3. 在來源資料庫中,輸入專用遷移帳戶的使用者名稱和密碼。
    4. 在「加密類型」選單中,選取下列其中一個選項:
      • :如果來源資料庫不需要 SSL/TLS 加密連線。
      • 必要:如果來源資料庫需要 SSL/TLS 加密連線,這個選項不需要驗證任何憑證。
    5. 在「要遷移的資料庫」選單中,按一下「自訂」。 使用側邊面板,只選取要遷移至 PostgreSQL 適用的 Cloud SQL 的資料庫。
    6. 按一下「Continue」(繼續)
  6. 在「設定目的地」部分,執行下列操作:
    1. 從「目的地執行個體類型」選單中,選取「新執行個體」

      資料庫遷移服務會為新執行個體使用 PostgreSQL 適用的 Cloud SQL 預設設定。按一下「自訂」,調整執行個體功能,例如機型、區域可用性或資料保護設定。如要進一步瞭解如何設定執行個體,請參閱建立執行個體

    2. 在「Password」(密碼) 欄位中,輸入預設 postgresql 管理員使用者的密碼。資料庫遷移服務會以這個使用者身分連線,以便遷移資料。
  7. 按一下「開始遷移」

    資料庫遷移服務現在會建立遷移工作,並開始遷移程序。您可以在資料庫遷移服務的遷移工作詳細資料中,監控遷移進度。詳情請參閱資料庫移轉服務文件中的「管理遷移作業」。

現有執行個體的快速遷移

如要將資料庫遷移至現有的 Cloud SQL 執行個體,請按照下列步驟操作:

  1. 前往「Instances」(執行個體) 頁面。

    前往「Instances」(執行個體)

  2. 選取要遷移資料庫的 Cloud SQL 執行個體。
  3. 在執行個體詳細資料頁面,按一下「遷移資料庫」

    系統會開啟資料庫遷移服務快速入門遷移表單。

  4. 在「設定遷移作業」部分,執行下列操作:
    1. 從「目的地區域」選單中,選取目的地 PostgreSQL 適用的 Cloud SQL 執行個體所在區域。
    2. 在「遷移作業前置字串」方塊中,輸入易記的字串,這個字串會加到為快速啟動遷移作業建立的所有遷移作業實體名稱中,包括連線設定檔、私人連線設定、網路連結及其子網路,以及遷移工作。
    3. 從「設定類型」選單中,選取下列其中一個選項:
      1. 現有連線設定:如果您已有網路連結和私人連線設定,且來源資料庫虛擬私有雲網路使用 Private Service Connect 介面,請選取這個選項。如果您先前使用快速入門遷移作業,並想重複使用相同的網路資源,建議採用這個選項。
      2. 新的連線設定:選取這個選項,在來源資料庫虛擬私有雲網路中建立新的網路連結、網路連結子網路和私人連線設定。
    4. 按一下「Continue」(繼續)
  5. 在「連結來源」部分,執行下列操作:
    1. 輸入來源資料庫的主機名稱或私有 IP 位址。來源資料庫位址必須可從來源虛擬私有雲網路連線。
    2. 輸入用來存取主機的通訊埠。預設的 PostgreSQL 連接埠為 5432
    3. 在來源資料庫中,輸入專用遷移帳戶的使用者名稱和密碼。
    4. 在「加密類型」選單中,選取下列其中一個選項:
      • :如果來源資料庫不需要 SSL/TLS 加密連線。
      • 必要:如果來源資料庫需要 SSL/TLS 加密連線,這個選項不需要驗證任何憑證。
    5. 在「要遷移的資料庫」選單中,按一下「自訂」。 使用側邊面板,只選取要遷移至 PostgreSQL 適用的 Cloud SQL 的資料庫。
  6. 按一下「開始遷移」

    資料庫遷移服務現在會建立遷移工作,並開始遷移程序。您可以在資料庫遷移服務的遷移工作詳細資料中,監控遷移進度。詳情請參閱資料庫移轉服務文件中的「管理遷移作業」。

完成遷移作業

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

  1. 停止對來源資料庫的所有寫入作業。您可以將這些裝置切換為唯讀模式,保留運作功能。
  2. 升級遷移工作
  3. 選用步驟: 確認遷移資料是否完整。

後續步驟