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

使用資料庫遷移服務建立目的地執行個體時,該執行個體不會降級,也不會以唯讀模式執行,但在遷移過程中執行特定作業可能會導致遷移錯誤。遷移至新的目的地執行個體時,請注意下列作業事項:

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

詳情請參閱「已知限制」。

建立遷移工作的步驟包括:

  1. 定義遷移工作的設定。
  2. 定義來源設定,並選取要遷移的資料庫。
  3. 定義目的地 Cloud SQL 資料庫執行個體的設定,並建立執行個體。
  4. 設定來源與目的地資料庫執行個體之間的連線。
  5. 測試遷移工作,確保您為工作提供的連線資訊有效。

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

控制台

定義遷移工作設定

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

    前往「Migration jobs」(遷移工作) 頁面

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

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

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

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

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

    2. 遷移工作 ID

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

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

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

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

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

    5. 指定遷移工作類型:「單次」或「連續」。
    6. 查看系統為環境產生的必要條件。請確認來源資料庫設定正確無誤。詳情請參閱「設定來源資料庫」。
  4. 按一下 [儲存並繼續]。

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

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

  1. 從「Source connection profile」(來源連線設定檔) 下拉式選單中,選取來源資料庫的連線設定檔 (或按一下「Create a connection profile」(建立連線設定檔),請參閱「建立來源連線設定檔」)。
  2. 在「Customize parallelism configurations」(自訂平行處理設定) 區段中,按一下「Show parallelism configurations」(顯示平行處理設定)。

    資料轉儲平行處理的速度,與來源資料庫的負載量有關。可用的設定如下:

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

    如果選擇調整平行處理設定,請務必提高來源資料庫的 max_replication_slots、max_wal_senders 和 max_worker_processes 參數。建立遷移工作後,您可以執行遷移工作測試,驗證設定是否正確。

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

設定並建立目的地 Cloud SQL 執行個體

  1. 在「Define a destination」(定義目的地) 頁面的「Type of destination instance」(目的地執行個體類型) 下拉式選單中,選取「New instance」(新執行個體)。定義所有相關設定:
    1. 在「Destination instance ID」(目的地執行個體 ID) 欄位中,提供 Cloud SQL 執行個體的 ID,或使用自動生成的 ID。

      請勿在 ID 中加入敏感或個人識別資訊。執行個體名稱不必包含專案 ID。系統會在適當情況下 (例如在記錄檔中) 自動執行這項操作。

    2. 在「Password」(密碼) 欄位中,輸入目的地 Cloud SQL 執行個體的英數字元密碼。這是執行個體中 postgres 管理員帳戶的密碼。

      您可以手動輸入密碼,也可以按一下「Generate」(產生),讓資料庫遷移服務自動建立密碼。

    3. 從「Database version」(資料庫版本) 下拉式選單中,選擇目的地執行個體的資料庫版本。

      進一步瞭解跨版本遷移支援。

    4. 選取目的地執行個體的 PostgreSQL 適用的 Cloud SQL 版本。有兩種選項:PostgreSQL 適用的 Cloud SQL Enterprise 版本和 PostgreSQL 適用的 Cloud SQL Enterprise Plus 版本。

      PostgreSQL 適用的 Cloud SQL 版本提供不同的功能、可用機型和定價。請務必參閱 Cloud SQL 說明文件,選擇符合需求的版本。詳情請參閱「PostgreSQL 適用的 Cloud SQL 版本簡介」。

    5. 「Region」(區域) 選單會顯示您在「Get started」(開始使用) 頁面中選取的區域。

      如要將執行個體設為高可用性,請選取「多可用區 (可用性高)」。您可以同時選取主要和次要可用區。 在建立執行個體期間使用次要可用區時,須符合下列條件:

      • 主要可用區預設為「Any」(不限),次要可用區預設為「Any (different from primary)」(不限 (與主要可用區不同))。
      • 如果同時指定主要和次要可用區,兩者必須不同。
    6. 在「連線」部分,選擇是否要為目的地執行個體新增公開或私人 IP 位址。您可以將執行個體設為同時具備這兩種 IP 位址,但至少須具備其中一種,才能進行遷移。請在下方選取一個適用選項:
      • 如要使用虛擬私有雲對接或反向 SSH 通道進行遷移,請選取 「私人 IP」 。
        • 如要啟用私人 IP 連線,請務必符合所有額外的網路需求。

          展開這個部分,即可查看完整的私人 IP 規定。

        • 選取要對接的相關聯虛擬私有雲網路。如要透過虛擬私有雲對接連線至遷移來源,請選擇執行個體所在的虛擬私有雲。
        • 如果所選虛擬私有雲從未設定代管服務網路,您可以選擇 IP 範圍,然後按一下「連線」,或使用系統自動選取的 IP 範圍,然後按一下「分配並連線」。
      • 如要使用 IP 許可清單透過網際網路遷移, 請選取 「Public IP」(公開 IP)。

        (選用) 在「公開 IP」下方,按一下「授權網路」欄位,然後授權網路或 Proxy 連線至 Cloud SQL 執行個體。網路僅會透過您提供的位址獲得授權。請參閱 Cloud SQL 說明文件中的「設定公開 IP」一節。

      您會在後續步驟中設定遷移工作連線。 如要進一步瞭解可用的網路方法,請參閱「設定連線」。

  2. 選取 Cloud SQL 執行個體的機型。進一步瞭解 PostgreSQL 機器類型。
  3. PostgreSQL 適用的 Cloud SQL Enterprise Plus 版本:如要在目的地資料庫使用資料快取功能,請勾選「Enable data cache」(啟用資料快取) 核取方塊。

    資料快取是 PostgreSQL 適用的 Cloud SQL Enterprise Plus 版本執行個體提供的選用功能,可為目的地資料庫新增高速本機固態硬碟。這項功能可能會增加 Cloud SQL 費用。 如要進一步瞭解資料快取,請參閱 Cloud SQL 說明文件中的「資料快取總覽」。

  4. 指定 Cloud SQL 執行個體的儲存空間類型。您可以選擇固態硬碟 (SSD) 或傳統硬碟 (HDD)。
  5. 指定 Cloud SQL 執行個體的儲存空間容量 (以 GB 為單位)。

    請確認執行個體有足夠的儲存空間,可處理來源資料庫中的資料。您隨時可以提高容量,但無法降低。

  6. (選用) 設定目的地執行個體的資料加密選項或資源標籤。

    展開這個部分即可查看選用步驟。

    按一下「顯示選用設定」,然後:

    1. 指定是否要管理從來源遷移至目的地的資料加密。根據預設,您的資料會以 Google Cloud代管的金鑰加密。如要自行管理加密作業,您可以使用客戶自行管理的加密金鑰 (CMEK)。方法如下:

      1. 勾選「使用客戶自行管理的加密金鑰 (CMEK)」核取方塊。
      2. 從「Select a customer-managed key」(選取客戶自行管理的金鑰) 選單中,選取 CMEK。

      如果找不到金鑰,請按一下「輸入金鑰資源名稱」,提供要使用的金鑰資源名稱。金鑰資源名稱範例:projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key。

    2. 新增要套用至資料庫伺服器的必要旗標。 如果可以,請確保建立的目的地 Cloud SQL 執行個體上的資料庫旗標與來源資料庫上的旗標相同。進一步瞭解 PostgreSQL 支援的資料庫旗標。
    3. 新增 Cloud SQL 執行個體專屬的標籤。

      標籤可以協助您管理執行個體。舉例來說,您可以按照成本中心或環境將標籤分門別類。帳單中也會顯示標籤,讓您瞭解標籤的成本分布情形。

  7. 按一下「建立目的地並繼續」。 資料庫遷移服務正在建立 Cloud SQL 目的地執行個體。這項程序應該會在幾分鐘內完成。

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

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

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

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

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

虛擬私有雲對接網路連線方式 您必須選取來源資料庫所在的虛擬私有雲網路。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

  1. 建立目的地連線設定檔。
    使用 Google Cloud CLI 遷移至新的目的地執行個體時,您可以在單一動作中建立目的地執行個體和連線設定檔。
    執行下列指令 (點選連結即可展開):

    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. 建立遷移工作。
    如果您使用虛擬私有雲對等互連或反向 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]