使用快速入門遷移功能遷移至 Cloud SQL


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

總覽

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

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

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

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

  • 來源資料庫必須在虛擬私有雲網路中指派私人 IP 位址。資料庫遷移服務會使用 Private Service Connect 介面 (網路連結) 連線至來源資料庫。快速啟動遷移作業不支援公開 IP 連線。

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

事前準備

  1. 確認快速遷移作業是否能完全支援您的情境。請參閱「 快速遷移功能的限制」。
  2. 在 Google Cloud 控制台的專案選取器頁面,選取或 建立 Google Cloud 專案。

    前往專案選取器

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

    啟用 API

必要的角色

如要取得所需權限,透過資料庫移轉服務快速啟動遷移至 Cloud SQL 的作業,請要求管理員在相關專案中,為參與遷移作業的帳戶授予必要的 Identity and Access Management (IAM) 角色。如要進一步瞭解如何授予角色,請參閱 IAM 說明文件中的「 管理存取權」。

來源專案中的角色和權限

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

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

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

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.

這些預先定義的角色具備必要權限,可讓您使用資料庫遷移服務快速啟動遷移作業,並在來源資料庫專案設定連線。如要查看確切的必要權限,請展開「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 說明文件中的「 建立使用者」。
    • 如需其他來源,請參閱資料庫供應商說明文件,或 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. 遷移使用者帳戶必須具備遷移資料表的擁有權存取權。如要授予這個層級的存取權,請採取下列其中一種做法:
    • 僅適用於 PostgreSQL 適用的 Cloud SQL 以外的來源:將 SUPERUSER PostgreSQL 角色指派給遷移帳戶。
    • 所有來源:將遷移使用者帳戶新增至擁有資料表的群組。 執行下列指令:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      更改下列內容:

      • TABLE_OWNER_GROUP_NAME:擁有要遷移的各個資料表的使用者群組名稱。
      • 將 MIGRATION_USER 替換為遷移使用者帳戶的名稱。
  4. 如果資料表沒有主鍵:在變更資料擷取 (CDC) 階段,資料庫遷移服務不會為沒有主鍵的資料表複製 UPDATE 或 DELETE 作業。如要在複製作業中納入這類作業,請使用 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 數量。

建立並執行快速遷移作業

控制台

如要使用 Google Cloud 控制台建立及執行快速啟動遷移作業,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Get started」(開始使用) 頁面。

    前往「開始使用」

  2. 在「Source engine」(來源引擎) 選單中,選取「PostgreSQL」。
  3. 在「Destination engine」(目的地引擎) 選單中,選取「PostgreSQL 適用的 Cloud SQL」。

    「隆重推出 PostgreSQL 快速遷移功能」部分隨即顯示。

  4. 在「隆重推出 PostgreSQL 快速遷移功能」部分,按一下「開始遷移」。

    「Migrate to Cloud SQL for PostgreSQL」(遷移至 PostgreSQL 適用的 Cloud SQL) 頁面隨即開啟。

  5. 在「Configure migration」(設定遷移作業) 部分,執行下列操作:
    1. 從「Destination region」(目的地地區) 選單中,選取目的地 Cloud SQL 執行個體的地區。
    2. 在「Migration prefix」(遷移作業前置字串) 方塊中,輸入容易理解的字串,這個字串會新增至為快速啟動遷移作業建立的所有遷移實體名稱:連線設定檔、私人連線設定、網路連結及其子網路,以及遷移工作。
    3. 從「Configuration type」(設定類型) 選單中,選取下列其中一個選項:
      1. 現有連線設定:如果您已有網路連結,以及使用 Private Service Connect 介面方法的私人連線設定,請選取這個選項。如果您先前使用過快速啟動遷移功能,且想重複使用相同的網路資源,則最適合使用這個選項。
      2. 「New connectivity configuration」(新增連線設定):選取這個選項,即可在來源資料庫虛擬私有雲網路中,建立新的網路連結和網路連結子網路。系統會在目的地執行個體所在的專案中建立私人連線設定。
    4. 按一下「繼續」。
  6. 在「Connect source」(連結來源) 部分,執行下列操作:
    1. 輸入來源資料庫的主機名稱或私人 IP 位址。來源資料庫位址必須可從來源虛擬私有雲網路連線。
    2. 輸入用於存取主機的通訊埠。預設的 PostgreSQL 通訊埠為 5432。
    3. 輸入來源資料庫中專用遷移帳戶的使用者名稱和密碼。
    4. 在「Encryption type」(加密類型) 選單中,選取下列其中一個選項:
      • 無:如果來源資料庫不需要 SSL/TLS 加密連線。
      • 必要:如果來源資料庫需要 SSL/TLS 加密連線。這個方法不需要驗證憑證。
    5. 在「Databases to migrate」(要遷移的資料庫) 選單中,按一下「Customize」(自訂)。 使用側邊面板,只選取要遷移至 Cloud SQL 的資料庫。
    6. 按一下「繼續」。
  7. 在「Configure destination」(設定目的地) 區段中,您可以建立新的目的地執行個體,或選取現有執行個體。

    新執行個體

    如要建立新的目的地執行個體,請按照下列步驟操作:

    1. 在「Destination instance type」(目的地執行個體類型) 選單中,選取「New instance」(新執行個體)。

      資料庫遷移服務會為新執行個體採用預設 Cloud SQL 設定。按一下「Customize」(自訂) 即可調整執行個體功能,例如機器類型、可用區可用性或資料保護設定。如要進一步瞭解執行個體設定,請參閱 Cloud SQL 說明文件中的「 建立執行個體」一文。

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

    現有執行個體

    您可以將資料庫遷移至現有的執行個體。請確認目的地執行個體已啟用 Private Service Connect,且未強制執行 mTLS 連線。請執行下列步驟:

    1. 在「Destination instance type」(目的地執行個體類型) 選單中,選取「Existing instance」(現有執行個體)。
    2. 從「Existing instance ID」(現有執行個體 ID) 選單中選取執行個體 ID。
  8. 按一下「開始遷移」。

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

gcloud

如要使用 gcloud CLI 建立及執行快速入門遷移作業,請按照下列步驟操作:

  1. 設定網路連結。
    決定要建立新的網路連結,還是重複使用現有連結。 您必須在可連至來源資料庫私人 IP 的網路中,建立網路連結。

    • 如要建立新的網路連結,請執行下列指令 (點選即可展開完整詳細資料)。

      gcloud compute network-attachments create

      使用下列任何指令資料前,請先替換以下項目:

      • NETWORK_ATTACHMENT:要建立的網路連結名稱。
      • 將 REGION 替換為網路連結的區域。
      • DEST_PROJECT_ID:目的地專案的專案 ID。
      • SOURCE_PROJECT_ID:來源網路所在的專案 ID。

      執行下列指令:

      Linux、macOS 或 Cloud Shell

      gcloud compute network-attachments create NETWORK_ATTACHMENT \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        --producer-accept-list=DEST_PROJECT_ID \
        --subnets=default \
        --project=SOURCE_PROJECT_ID

      Windows (PowerShell)

      gcloud compute network-attachments create NETWORK_ATTACHMENT `
        --region=REGION `
        --connection-preference=ACCEPT_MANUAL `
        --producer-accept-list=DEST_PROJECT_ID `
        --subnets=default `
        --project=SOURCE_PROJECT_ID

      Windows (cmd.exe)

      gcloud compute network-attachments create NETWORK_ATTACHMENT ^
        --region=REGION ^
        --connection-preference=ACCEPT_MANUAL ^
        --producer-accept-list=DEST_PROJECT_ID ^
        --subnets=default ^
        --project=SOURCE_PROJECT_ID
    • 如要重複使用現有的網路連結,請繼續下一個步驟。
  2. 允許資料庫遷移服務租戶專案存取網路連結。
    網路連結必須允許來自資料庫遷移服務租戶專案的連線。請執行下列步驟:

    1. 執行模擬測試,建立私人連線,藉此擷取資料庫遷移服務租戶專案 ID (點選即可展開):

      gcloud database-migration private-connections create --validate-only

      使用下列任何指令資料前,請先替換以下項目:

      • 將 PRIVATE_CONN 替換為私人連線資源的名稱。
      • 將 REGION 替換為私人連線的區域。
      • NETWORK_ATTACHMENT_URI:網路連結的 URI。

      執行下列指令:

      Linux、macOS 或 Cloud Shell

      gcloud database-migration private-connections create PRIVATE_CONN \
        --region=REGION \
        --network-attachment=NETWORK_ATTACHMENT_URI \
        --display-name=PRIVATE_CONN \
        --format="value(metadata.metadata.tenant_project_id)" \
        --validate-only

      Windows (PowerShell)

      gcloud database-migration private-connections create PRIVATE_CONN `
        --region=REGION `
        --network-attachment=NETWORK_ATTACHMENT_URI `
        --display-name=PRIVATE_CONN `
        --format="value(metadata.metadata.tenant_project_id)" `
        --validate-only

      Windows (cmd.exe)

      gcloud database-migration private-connections create PRIVATE_CONN ^
        --region=REGION ^
        --network-attachment=NETWORK_ATTACHMENT_URI ^
        --display-name=PRIVATE_CONN ^
        --format="value(metadata.metadata.tenant_project_id)" ^
        --validate-only

      儲存傳回的租戶專案 ID,以便與後續指令搭配使用。

    2. 允許資料庫遷移服務租戶專案和目的地專案連線至網路連結 (點選即可展開):

      gcloud compute network-attachments update

      使用下列任何指令資料前,請先替換以下項目:

      • NETWORK_ATTACHMENT:網路連結的名稱。
      • REGION與區域。
      • DEST_PROJECT_ID:目的地專案的專案 ID。
      • DMS_TENANT_ID:擷取的資料庫遷移服務租戶專案 ID。
      • SOURCE_PROJECT_ID:來源網路所在的專案 ID。

      執行下列指令:

      Linux、macOS 或 Cloud Shell

      gcloud compute network-attachments update NETWORK_ATTACHMENT \
        --region=REGION \
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \
        --project=SOURCE_PROJECT_ID

      Windows (PowerShell)

      gcloud compute network-attachments update NETWORK_ATTACHMENT `
        --region=REGION `
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID `
        --project=SOURCE_PROJECT_ID

      Windows (cmd.exe)

      gcloud compute network-attachments update NETWORK_ATTACHMENT ^
        --region=REGION ^
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^
        --project=SOURCE_PROJECT_ID
  3. 建立資料庫遷移服務私人連線資源。
    執行下列指令 (點選即可展開):

    gcloud database-migration private-connections create

    使用下列任何指令資料前,請先替換以下項目:

    • 將 PRIVATE_CONN 替換為私人連線資源的名稱。
    • 將 REGION 替換為私人連線的區域。
    • NETWORK_ATTACHMENT_URI:網路連結的 URI。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration private-connections create PRIVATE_CONN \
      --region=REGION \
      --network-attachment=NETWORK_ATTACHMENT_URI \
      --display-name=PRIVATE_CONN

    Windows (PowerShell)

    gcloud database-migration private-connections create PRIVATE_CONN `
      --region=REGION `
      --network-attachment=NETWORK_ATTACHMENT_URI `
      --display-name=PRIVATE_CONN

    Windows (cmd.exe)

    gcloud database-migration private-connections create PRIVATE_CONN ^
      --region=REGION ^
      --network-attachment=NETWORK_ATTACHMENT_URI ^
      --display-name=PRIVATE_CONN
  4. 建立來源連線設定檔。
    執行下列指令 (點選即可展開):

    gcloud database-migration connection-profiles create postgresql

    這個範例使用選用的 --no-async 旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過 --no-async 旗標,以非同步方式執行指令。如果這麼做,您需要使用 gcloud database-migration operations describe 指令,確認作業是否成功。

    使用下列任何指令資料前,請先替換以下項目:

    • 將 SOURCE_CONN_ID 替換為來源連線設定檔 ID。
    • 將 REGION 替換為要儲存連線設定檔的區域。
    • SOURCE_PRIVATE_IP 替換為來源資料庫的私人 IP 位址。
    • SOURCE_PORT 替換為來源資料庫的通訊埠 (預設為 5432)。
    • SOURCE_USER:來源資料庫遷移使用者的使用者名稱。
    • SOURCE_PASSWORD 替換為來源資料庫遷移使用者的密碼。
    • 將 PRIVATE_CONN 替換為私人連線資源的名稱。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration connection-profiles create postgresql \
      SOURCE_CONN_ID \
      --region=REGION \
      --role=SOURCE \
      --host=SOURCE_PRIVATE_IP \
      --port=SOURCE_PORT \
      --username=SOURCE_USER \
      --password=SOURCE_PASSWORD \
      --private-connection=PRIVATE_CONN \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql `
      SOURCE_CONN_ID `
      --region=REGION `
      --role=SOURCE `
      --host=SOURCE_PRIVATE_IP `
      --port=SOURCE_PORT `
      --username=SOURCE_USER `
      --password=SOURCE_PASSWORD `
      --private-connection=PRIVATE_CONN `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql ^
      SOURCE_CONN_ID ^
      --region=REGION ^
      --role=SOURCE ^
      --host=SOURCE_PRIVATE_IP ^
      --port=SOURCE_PORT ^
      --username=SOURCE_USER ^
      --password=SOURCE_PASSWORD ^
      --private-connection=PRIVATE_CONN ^
      --no-async
  5. 建立目的地連線設定檔。
    根據要遷移至新的或現有的 Cloud SQL 執行個體,選取分頁標籤:

    新執行個體

    如要使用新的目的地執行個體進行快速入門遷移作業,請先使用 Cloud SQL Google Cloud CLI 建立執行個體,然後建立目的地連線設定檔。請按照下列步驟操作:

    1. 使用 Cloud SQL Google Cloud CLI 建立執行個體。請務必使用 --enable-private-service-connect 旗標,為 Private Service Connect 啟用目的地執行個體。快速啟動遷移功能僅支援已啟用 Private Service Connect 的執行個體。
    2. 為新執行個體建立目的地連線設定檔。 展開下列部分,查看完整指令詳細資料。

      gcloud database-migration connection-profiles create postgresql

      這個範例使用選用的 --no-async 旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過 --no-async 旗標,以非同步方式執行指令。如果這麼做,您需要使用 gcloud database-migration operations describe 指令,確認作業是否成功。

      使用下列任何指令資料前,請先替換以下項目:

      • 將 DEST_CONN_ID 替換為目的地連線設定檔 ID。
      • 將 REGION 替換為要儲存連線設定檔的區域。這個區域應與目的地執行個體區域相同。
      • DEST_INSTANCE:預先建立的目的地 Cloud SQL 執行個體 ID。
      • DEST_USER:目的地資料庫的遷移使用者名稱。
      • DEST_PASSWORD:目的地資料庫中遷移使用者的密碼。

      執行下列指令:

      Linux、macOS 或 Cloud Shell

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
        --region=REGION \
        --cloudsql-instance=DEST_INSTANCE \
        --username=DEST_USER \
        --password=DEST_PASSWORD \
        --role=DESTINATION \
        --no-async

      Windows (PowerShell)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
        --region=REGION `
        --cloudsql-instance=DEST_INSTANCE `
        --username=DEST_USER `
        --password=DEST_PASSWORD `
        --role=DESTINATION `
        --no-async

      Windows (cmd.exe)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
        --region=REGION ^
        --cloudsql-instance=DEST_INSTANCE ^
        --username=DEST_USER ^
        --password=DEST_PASSWORD ^
        --role=DESTINATION ^
        --no-async

      您應該會收到類似以下的回應:

      Waiting for connection profile [CONNECTION_PROFILE_ID]
      to be created with [OPERATION_ID]
      
      Waiting for operation [OPERATION_ID] to complete...done.
      
      Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
      

    現有執行個體

    如要遷移至現有的目的地執行個體,請建立連線設定檔,並指向預先建立的執行個體。執行下列指令 (點選即可展開):

    gcloud database-migration connection-profiles create postgresql

    這個範例使用選用的 --no-async 旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過 --no-async 旗標,以非同步方式執行指令。如果這麼做,您需要使用 gcloud database-migration operations describe 指令,確認作業是否成功。

    使用下列任何指令資料前,請先替換以下項目:

    • 將 DEST_CONN_ID 替換為目的地連線設定檔 ID。
    • 將 REGION 替換為要儲存連線設定檔的區域。這個區域應與目的地執行個體區域相同。
    • DEST_INSTANCE:預先建立的目的地 Cloud SQL 執行個體 ID。
    • DEST_USER:目的地資料庫的遷移使用者名稱。
    • DEST_PASSWORD:目的地資料庫中遷移使用者的密碼。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --cloudsql-instance=DEST_INSTANCE \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --cloudsql-instance=DEST_INSTANCE `
      --username=DEST_USER `
      --password=DEST_PASSWORD `
      --role=DESTINATION `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
      --region=REGION ^
      --cloudsql-instance=DEST_INSTANCE ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    您應該會收到類似以下的回應:

    Waiting for connection profile [CONNECTION_PROFILE_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
    
  6. 建立遷移工作。
    執行下列指令 (點選即可展開):

    gcloud database-migration migration-jobs create

    這個範例使用選用的 --no-async 旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過 --no-async 旗標,以非同步方式執行指令。如果這麼做,您需要使用 gcloud database-migration operations describe 指令,確認作業是否成功。

    使用下列任何指令資料前,請先替換以下項目:

    • 將 MIGRATION_JOB_ID 替換為遷移工作 ID。
    • REGION 替換為要儲存遷移工作的區域。
    • SOURCE_CONN_ID 替換為來源連線設定檔 ID。
    • 將 DEST_CONN_ID 替換為目的地連線設定檔 ID。
    • DATABASES_LIST:要遷移的資料庫,以半形逗號分隔。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration migration-jobs create \
      MIGRATION_JOB_ID \
      --region=REGION \
      --type=CONTINUOUS \
      --source=SOURCE_CONN_ID \
      --destination=DEST_CONN_ID \
      --use-postgres-native \
      --postgres-max-additional-subscriptions=10 \
      --databases-filter=DATABASES_LIST \
      --no-async

    Windows (PowerShell)

    gcloud database-migration migration-jobs create `
      MIGRATION_JOB_ID `
      --region=REGION `
      --type=CONTINUOUS `
      --source=SOURCE_CONN_ID `
      --destination=DEST_CONN_ID `
      --use-postgres-native `
      --postgres-max-additional-subscriptions=10 `
      --databases-filter=DATABASES_LIST `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration migration-jobs create ^
      MIGRATION_JOB_ID ^
      --region=REGION ^
      --type=CONTINUOUS ^
      --source=SOURCE_CONN_ID ^
      --destination=DEST_CONN_ID ^
      --use-postgres-native ^
      --postgres-max-additional-subscriptions=10 ^
      --databases-filter=DATABASES_LIST ^
      --no-async

    您應該會收到類似以下的回應:

    Waiting for migration job [MIGRATION_JOB_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created migration job MIGRATION_JOB_ID [OPERATION_ID]
    
  7. 執行遷移工作。
    啟動遷移工作 (點選即可展開):

    gcloud database-migration migration-jobs start

    這個範例使用選用的 --no-async 旗標,因此所有作業都會同步執行。這表示某些指令可能需要一段時間才能完成。您可以略過 --no-async 旗標,以非同步方式執行指令。如果這麼做,您需要使用 gcloud database-migration operations describe 指令,確認作業是否成功。

    使用下列任何指令資料前,請先替換以下項目:

    • 將 MIGRATION_JOB_ID 替換為遷移工作 ID。

      如果您不知道 ID,可以使用 gcloud database-migration migration-jobs list 指令列出特定區域中的所有遷移工作,並查看其 ID。

    • REGION:遷移工作的儲存區域 ID。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration migration-jobs \
    start MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    start MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    start MIGRATION_JOB_ID ^
      --region=REGION

    結果

    這項動作會以非同步方式執行。 因此,這個指令會傳回代表長時間執行的作業的 作業實體:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:

完成遷移作業

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

  1. 停止來源資料庫的所有寫入作業。您可以將其切換為唯讀模式,以保留作業功能。
  2. 升級遷移工作。如果是快速遷移,目的地執行個體在遷移過程中仍可寫入。升級遷移工作只會結束複製作業,不會對目的地執行個體造成任何影響。
  3. 選用步驟: 驗證遷移資料的完整性。

後續步驟