建立遷移工作至現有目的地執行個體

遷移至現有目的地執行個體時,如果是標準遷移作業,資料庫遷移服務會將目的地執行個體降級,設為外部副本。降級執行個體不會將 PostgreSQL 適用的 Cloud SQL 設為唯讀模式,但在遷移過程中執行特定作業,可能會導致遷移錯誤。遷移至現有的目的地執行個體時,請注意下列操作事項:

  • 執行個體降級:如果是標準遷移作業,資料庫遷移服務會將目的地執行個體降級,設為來源資料庫的副本。快速遷移作業不需要也不會降級目的地執行個體。
  • 避免對遷移資料執行寫入作業:請勿在目的地執行個體中,對遷移作業包含的資料表或資料庫執行寫入作業 (例如 INSERT、UPDATE、DELETE 或 DDL 結構定義變更)。這類作業可能會導致與來源資料發生複製衝突。
  • 管理資料庫使用者:您隨時可以使用標準 psql 指令,或透過 Google Cloud 控制台中的 Cloud SQL 建立及管理資料庫使用者。詳情請參閱 Cloud SQL 說明文件中的「管理使用者」一文。
  • 備份和唯讀副本:在連續複製期間,自動備份和時間點復原 (PITR) 功能會暫停,且在升級遷移工作前,您無法從目的地執行個體建立 Cloud SQL 唯讀副本。

詳情請參閱「現有執行個體的已知限制」。

資料庫遷移服務會執行遷移工作,將資料從來源資料庫執行個體遷移到目的地資料庫執行個體。為現有目的地執行個體建立遷移工作,包括:

  • 定義遷移工作設定
  • 定義來源設定並選取要遷移的資料庫
  • 選取現有的目的地資料庫執行個體
  • 將現有執行個體降級,設為來源資料庫的副本 (僅限標準遷移作業)
  • 設定來源與目的地資料庫執行個體之間的連線
  • 測試遷移工作,確保您為工作提供的連線資訊有效

事前準備

建立遷移工作,將資料遷移至現有的目的地資料庫執行個體前,請務必完成下列事項:

  1. 確認這項遷移類型支援您的情境。 舉例來說,如要遷移至在資料庫遷移服務以外建立的資料庫,Cloud SQL 目的地執行個體必須為空白,或僅包含系統設定資料。詳情請參閱「已知限制」。
  2. 建立目的地資料庫執行個體。 請參閱 Cloud SQL 說明文件中的「建立執行個體」。

  3. 準備來源資料庫執行個體。請參閱下列頁面:
    1. 設定來源資料庫
    2. 建立來源連線設定檔
    3. 設定連線能力

如要建立遷移工作,將資料遷移至現有的目的地執行個體,請按照下列步驟操作:

控制台

定義遷移工作設定

  1. 前往 Google Cloud 控制台的「Migration jobs」(遷移工作) 頁面。

    前往「遷移工作」頁面

  2. 按一下「建立遷移工作」。

    遷移工作設定精靈頁面隨即開啟。 這個精靈包含多個面板,可引導您完成各項設定步驟。

    您隨時可以點選「儲存並結束」,暫停建立遷移工作。您輸入的所有資料都會儲存為草稿遷移工作。您可以稍後再完成遷移工作草稿。

  3. 在「開始使用」頁面中輸入下列資訊:
    1. 遷移工作名稱

      這是遷移工作的人類可讀名稱。這個值會顯示在 Google Cloud 控制台中。

    2. 遷移工作 ID

      這是遷移工作的機器可讀 ID。 您可以使用這個值,透過資料庫遷移服務 Google Cloud CLI 指令或 API 執行遷移工作。

    3. 從「Source database engine」(來源資料庫引擎) 清單中選取「PostgreSQL」。

      系統會自動填入「Destination database engine」(目的地資料庫引擎) 欄位,且無法變更。

    4. 選取儲存遷移工作的區域。

      資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源和目的地連線設定檔、遷移工作、目的地資料庫) 都必須儲存在單一區域。請根據需要資料的服務 (例如 Compute Engine 執行個體、App Engine 應用程式和其他服務) 所在位置選取區域。選定目的地區域後,即無法變更。

    5. 指定遷移工作類型:「單次」 (僅限快照) 或「連續」(快照 + 持續變更)。
  4. 按一下 [儲存並繼續]。

指定來源連線設定檔的相關資訊

在「Define a source」(定義來源) 頁面中,執行下列步驟:

  1. 在「Source connection profile」(來源連線設定檔) 下拉式選單中,選取來源資料庫的連線設定檔。
  2. 在「Customize data dump configurations」(自訂資料轉儲設定) 部分,按一下「Show data dump configurations」(顯示資料轉儲設定)。

    資料轉儲平行處理的速度,與來源資料庫的負載量有關:

    • 最佳 (建議):平衡效能,來源資料庫負載最佳。
    • 最大:提供最快的轉儲速度,但可能會增加來源資料庫的負載。
    • 最低:在來源資料庫上使用最少的運算資源,但傾印處理量可能較低。

    如果選擇調整資料轉儲平行處理設定,請務必提高來源資料庫的 max_replication_slots、max_wal_senders 和 max_worker_processes 參數。

  3. 按一下 [儲存並繼續]。

選取目的地 Cloud SQL 執行個體

  1. 在「Type of destination instance」(目的地執行個體類型) 選單中,選取「Existing instance」(現有執行個體)。
  2. 在「Select destination instance」(選取目的地執行個體) 部分,選取目的地執行個體。
  3. 查看「Instance details」(執行個體詳細資料) 區段中的資訊,然後按一下「Select and continue」(選取並繼續)。

    如要在標準遷移作業中遷移至現有的目的地資料庫,資料庫遷移服務會降級目標執行個體,並將其設為副本。在確認視窗中輸入目的地執行個體 ID,表示可以安全執行降級作業。

  4. 按一下「確認並繼續」。

設定來源與目的地資料庫執行個體之間的連線

從「Connectivity method」(連線方式) 下拉式選單中,選取網路連線方式。這個方法定義了目的地 Cloud SQL 執行個體連線至來源資料庫的方式。目前的網路連線方法包括 IP 許可清單、反向 SSH 通道、Private Service Connect 介面和虛擬私有雲對接。

如要使用...具體做法
IP 許可清單網路連線方式 您必須指定目的地執行個體的傳出 IP 位址。如果您建立的 Cloud SQL 執行個體是高可用性執行個體,請一併加入主要和次要執行個體的傳出 IP 位址。
反向 SSH 通道網路連線方式 您必須選取要託管通道的 Compute Engine VM 執行個體。

指定執行個體後,Google 會提供指令碼,執行在來源和目的地資料庫之間設定通道的步驟。您必須在 Google Cloud CLI 中執行指令碼。

請從可連線至來源資料庫和 Google Cloud的機器執行指令。

Private Service Connect 介面連線方式 資料庫遷移服務會自動建立必要連線。 只有在目的地執行個體已啟用 Private Service Connect,且具備網路連結時,才能使用這個連線方式。如要進一步瞭解 Private Service Connect 介面,請參閱 Cloud SQL 說明文件中的「Private Service Connect 傳出連線」。
虛擬私有雲對接網路連線方式 您必須選取來源資料庫所在的虛擬私有雲網路。Cloud SQL 執行個體會更新,連線至這個網路。

選取並設定網路連線後,按一下「Configure and continue」(設定並繼續)。

設定遷移資料庫

您可以從來源執行個體遷移所有資料庫,或只選擇特定資料庫。目的地執行個體不得包含與所選遷移資料庫同名的資料庫。如果資料庫遷移服務遇到資料庫名稱衝突,系統會在遷移前刪除目的地中的衝突資料庫。

  1. 從「Databases to migrate」(要遷移的資料庫) 清單中,選取下列其中一個選項:
    • 所有資料庫:選取來源中的所有資料庫。
    • 「Specific databases」(特定資料庫):可從來源的所有資料庫中選取特定資料庫。
  2. 如要遷移特定資料庫,可以篩選顯示的清單,並選取要透過資料庫遷移服務遷移至目的地的資料庫。

    如果清單未顯示,且出現資料庫探索錯誤,請按一下「重新載入」。如果資料庫探索失敗,工作會遷移所有資料庫。您可以繼續建立遷移工作,稍後再修正連線錯誤。

  3. 按一下 [儲存並繼續]。

測試、建立及執行遷移工作

在最後一個步驟中,請查看遷移工作設定、來源、目的地和連線方式的摘要,然後測試遷移工作設定是否有效。如果遇到任何問題,可以修改遷移工作的設定。部分設定無法編輯。

  1. 在「測試及建立遷移工作」頁面,點選「測試工作」。

    如果測試失敗,您可以在流程的適當部分解決問題,然後返回重新測試。如要瞭解如何排解遷移工作測試失敗的問題,請參閱「診斷 PostgreSQL 問題」。

  2. 遷移工作測試完成後,按一下「Create and start job」(建立並啟動工作),即可建立遷移工作並立即啟動;或者,您也可以按一下「Create job」(建立工作),建立遷移工作,但不立即啟動。

    如果工作在建立時未啟動,可以前往「Migration jobs」(遷移工作) 頁面,然後按一下「START」(啟動) 來啟動工作。無論遷移工作何時開始,貴組織都必須為目的地執行個體的存在付費。

    遷移作業正在進行中。啟動遷移工作後,資料庫遷移服務會開始執行初始完整轉儲和複製作業。詳情請參閱「已知限制」。

  3. 請繼續查看遷移工作。

Google Cloud CLI

使用 Google Cloud CLI 遷移至現有執行個體時,必須手動建立目的地執行個體的連線設定檔。如果使用 Google Cloud 控制台,則不需要執行這項操作,因為資料庫遷移服務會為您建立及移除目的地連線設定檔。

  1. 建立目的地連線設定檔。
    執行 gcloud database-migration connection-profiles create 指令,為現有目的地執行個體建立目的地連線設定檔 (點選連結即可展開):

    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]
    
  2. 建立遷移工作。
    下列範例代表遷移情境,其中您在來源和目的地資料庫之間使用私人 IP 連線。如果使用其他連線類型 (例如虛擬私有雲對等互連或反向 SSH 通道),請務必新增必要旗標,例如 --peer-vpc 或 --vm、--vm-ip、--vm-port、--vpc。詳情請參閱「設定連線」和「Google Cloud CLI 範例」。
    執行下列指令 (點選連結即可展開):

    gcloud database-migration migration-jobs create

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

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

    • MIGRATION_JOB_ID:遷移工作的機器可讀 ID。您可以使用這個值,透過資料庫遷移服務 Google Cloud CLI 指令或 API 執行遷移工作。
    • REGION:要儲存遷移工作的區域 ID。
    • MIGRATION_JOB_NAME:遷移工作的人類可讀名稱。這個值會顯示在 Google Cloud 控制台的資料庫遷移服務中。
    • SOURCE_CONNECTION_PROFILE_ID:來源連線設定檔的機器可讀 ID。詳情請參閱「建立來源連線設定檔」。
    • DESTINATION_CONNECTION_PROFILE_ID 替換為目的地連線設定檔的機器可讀 ID。
    • 選用:資料庫遷移服務預設會遷移來源中的所有資料庫。如要只遷移特定資料庫,請使用 --databases-filter 旗標,並以半形逗號分隔的清單指定 ID。

      例如:--databases-filter=my-business-database,my-other-database

      您之後可以使用 gcloud database-migration migration-jobs update 指令,編輯使用 --databases-filter 旗標建立的遷移工作。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration migration-jobs \
    create MIGRATION_JOB_ID \
      --no-async \
      --region=REGION \
      --display-name=MIGRATION_JOB_NAME \
      --source=SOURCE_CONNECTION_PROFILE_ID \
      --destination=DESTINATION_CONNECTION_PROFILE_ID \
      --type=CONTINUOUS

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    create MIGRATION_JOB_ID `
      --no-async `
      --region=REGION `
      --display-name=MIGRATION_JOB_NAME `
      --source=SOURCE_CONNECTION_PROFILE_ID `
      --destination=DESTINATION_CONNECTION_PROFILE_ID `
      --type=CONTINUOUS

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    create MIGRATION_JOB_ID ^
      --no-async ^
      --region=REGION ^
      --display-name=MIGRATION_JOB_NAME ^
      --source=SOURCE_CONNECTION_PROFILE_ID ^
      --destination=DESTINATION_CONNECTION_PROFILE_ID ^
      --type=CONTINUOUS

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

    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]
    
  3. 降級目的地資料庫。
    如要執行標準遷移作業,資料庫遷移服務會要求您先將現有的目的地資料庫執行個體降級,並設為外部副本,再開始遷移工作。執行 gcloud database-migration migration-jobs demote-destination 指令 (點選連結即可展開):

    gcloud database-migration migration-jobs demote-destination

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

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

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

    • 將 REGION 替換為連線設定檔儲存區域的 ID。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration migration-jobs \
    demote-destination MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    demote-destination MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    demote-destination 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: demote-destination
    name: OPERATION_ID
    

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

  4. 選用:驗證遷移工作。
    此時,遷移工作已設定完畢,並連線至目的地資料庫執行個體。您可以使用 verify、start、stop、restart 和 resume 作業來管理。建議您先執行 gcloud database-migration migration-jobs verify 指令,驗證遷移工作 (點選連結即可展開):

    gcloud database-migration migration-jobs verify

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

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

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

    • 將 REGION 替換為連線設定檔儲存區域的 ID。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

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

    Windows (PowerShell)

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

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    verify 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: verify
    name: OPERATION_ID
    

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

  5. 啟動遷移工作。
    執行 gcloud database-migration migration-jobs start 指令,啟動遷移工作 (點選連結即可展開):

    gcloud database-migration migration-jobs start

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

    • 將 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
    

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

  6. 升級遷移工作。
    遷移作業進入變更資料擷取 (CDC) 階段後,您就能將目的地資料庫執行個體從副本升級為獨立執行個體。 執行 gcloud database-migration migration-jobs promote 指令 (點選連結即可展開):

    gcloud database-migration migration-jobs promote

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

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

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

    • 將 REGION 替換為連線設定檔儲存區域的 ID。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

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

    Windows (PowerShell)

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

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    promote 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
    

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