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

使用資料庫遷移服務建立目的地執行個體時,該執行個體會自動降級,並以唯讀副本的形式運作。這表示部分作業會受到限制。舉例來說,如要在遷移作業進行期間,在新目的地建立使用者,請在 Google Cloud 控制台中使用 Cloud SQL。詳情請參閱 Cloud SQL 說明文件中的「管理使用者」。

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

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

事前準備

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

  1. 確認這項遷移類型可支援您的情境。 詳情請參閱「已知限制」。
  2. 設定來源資料庫並建立網路連線。 建立遷移工作是完整遷移程序中的其中一個步驟。建議您按照逐步遷移指南操作,並在到達遷移工作步驟時返回此程序。請參閱「 遷移至新執行個體」。

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

控制台

定義遷移工作的設定

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

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

  2. 點選「建立遷移工作」。

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

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

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

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

    2. 遷移工作 ID

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

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

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

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

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

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

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

在「定義來源」頁面中,執行下列步驟:

  1. 在「Source connection profile」(來源連線設定檔) 下拉式選單中,選取來源資料庫的連線設定檔。
  2. 在「Customize full dump configuration」(自訂完整 dump 設定) 部分,按一下「Edit configuration」(編輯設定)。
  3. 在「Edit full dump configuration」(編輯完整 dump 設定) 面板中,從「Full dump method」(完整 dump 方法) 下拉式選單中選取下列其中一項:
    • 以實體為準:如要使用 Percona XtraBackup 公用程式提供自己的備份檔案,請選取這個選項。這個方法需要額外的準備步驟。如需使用 Percona XtraBackup 產生的實體備份檔案完整指南,請參閱「使用 Percona XtraBackup 實體檔案移轉資料庫」。
    • 以邏輯為準:如要使用 mysqldump 公用程式建立的邏輯備份檔案,請選取這個選項。資料庫遷移服務可自動產生這個備份檔案,您也可以自行提供副本。
  4. 編輯其餘的傾印設定。執行下列其中一項操作:
    • 如果您使用實體備份檔案,請在「提供資料夾」中按一下「瀏覽」,然後選取您上傳完整 dump 檔案的資料夾。請務必選取含有完整備份檔案的專用資料夾,而非儲存空間 bucket 本身。
    • 如果使用邏輯備份檔案,請設定資料轉儲平行處理或轉儲旗標。

      展開這個部分,查看完整的邏輯備份檔案步驟

      在「Choose how to generate your dump file」(選擇如何產生 dump 檔案) 部分中,使用下列其中一個選項:

      1. 自動生成初始傾印 (建議)

        建議您使用這個選項,因為建立並啟動遷移工作後,資料庫遷移服務一律會產生初始資料庫 dump 檔案。

        資料庫遷移服務會使用這個檔案,重現來源資料庫的原始物件定義和資料表資料,以便將這些資訊遷移至目的地 Cloud SQL 資料庫執行個體。

        如果使用自動生成的轉儲,請在「Configure data dump operation」(設定資料轉儲作業) 區段中,選取資料庫遷移服務應執行的作業類型:

        • 資料轉儲平行處理:使用高效能平行處理選項,適用於遷移至 MySQL 5.7 或 8 版。

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

          • 最佳 (建議):平衡效能,來源資料庫負載最佳。
          • 最大:提供最快的傾印速度,但可能會增加來源資料庫的負載。
          • 最低:在來源資料庫上使用最少的運算資源,但傾印處理量可能較低。
        • Dump 旗標:這個選項與「資料 dump 平行處理程度」互斥。 使用這項設定,直接為用於建立 dump 檔案的 mysqldump 公用程式設定旗標。

          如要新增標記,請按照下列步驟操作:

          1. 按一下「新增旗標」。
          2. 選取下列任一旗標:

            • add-locks::這個旗標會使用 LOCK TABLES 和 UNLOCK TABLES 陳述式,包圍 dump 檔案中的每個資料表。這樣一來,將 dump 檔案載入目的地執行個體時,插入作業的速度會更快。
            • ignore-error: 使用這個旗標輸入以半形逗號分隔的錯誤編號清單。 這些數字代表 mysqldump 公用程式會忽略的錯誤。
            • max-allowed-packet: 使用這個旗標,設定 MySQL 用戶端與來源 MySQL 資料庫之間通訊的緩衝區大小上限。緩衝區的預設大小為 24 MB,最大大小為 1 GB。
          3. 點選「完成」。
          4. 針對要新增的每個標記重複上述步驟。

          如要移除標記,請按一下標記所在資料列右側的垃圾桶圖示。

      2. 自行提供

        不建議使用這個選項,因為資料庫遷移服務預設會在遷移工作執行期間,執行初始轉儲作業。

        如要使用自己的 dump 檔案,請選取「提供您自己的檔案」,按一下「瀏覽」,選取檔案 (或整個 Cloud Storage 資料夾,如果使用多個檔案),然後按一下「選取」。

        請確認傾印是在過去 24 小時內產生,且符合傾印規定。

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

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

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

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

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

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

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

      按一下「顯示子版本」,即可查看所有子版本。 進一步瞭解 跨版本遷移支援。

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

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

    5. 「區域」選單會顯示您在「開始使用」頁面選取的區域。

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

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

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

        • 選取要對等互連的相關聯虛擬私有雲網路。如要透過虛擬私有雲對等互連連線至遷移作業來源,請選擇執行個體所在的虛擬私有雲。
        • 如果所選虛擬私有雲從未設定受管理服務網路,您可以選擇 IP 範圍並點選「連線」,或是使用系統自動選取的 IP 範圍並點選「分配並連線」。
      • 如要使用 IP 許可清單透過網際網路遷移,請選取「公開 IP」。

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

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

  2. 選取 Cloud SQL 執行個體的機型。磁碟大小必須大於或等於來源資料庫大小。進一步瞭解 MySQL 機型。
  3. MySQL 適用的 Cloud SQL Enterprise Plus 版本:如要在目的地資料庫中使用資料快取功能,請選取「啟用資料快取」核取方塊。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

虛擬私有雲對等互連網路連線方式, 您需要選取來源資料庫所在的虛擬私有雲網路。Cloud SQL 執行個體會更新,連線至這個網路。

選取並設定網路連線後,按一下「設定並繼續」。

設定遷移資料庫

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

  1. 在「要移轉的資料庫」清單中,選取下列任一選項:
    • 所有資料庫:選取來源上的所有資料庫。
    • 特定資料庫:可從來源的所有資料庫中選取特定資料庫。
  2. 如要遷移特定資料庫,可以篩選顯示的清單,並選取要透過資料庫遷移服務遷移至目的地的資料庫。

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

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

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

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

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

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

  2. 遷移作業測試完成後,請按一下「建立並啟動作業」,建立並立即啟動遷移作業;或按一下「建立作業」,建立遷移作業但不立即啟動。

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

    遷移作業現正進行中。啟動遷移工作後,資料庫遷移服務會開始完整傾印,並短暫鎖定來源資料庫。如果來源位於 Amazon RDS 或 Amazon Aurora,資料庫遷移服務還需要在遷移作業開始時,短暫停止寫入作業 (約一分鐘內)。詳情請參閱「已知限制」。

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

gcloud

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

    gcloud database-migration connection-profiles create cloudsql

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

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

    • CONNECTION_PROFILE_ID 替換為連線設定檔的機器可讀 ID。
    • DATABASE_VERSION,並在目的地執行個體中使用。資料庫版本是以字串形式指定,包含主要和子版本。例如:MYSQL_8_0、MYSQL_8_0_32、MYSQL_8_0_36。

      如要查看所有可能的 MySQL 版本,請參閱 --database-version 旗標參考資料。

    • (選用) EDITION 根據預設,您使用 Google Cloud CLI 建立的新執行個體會使用 MySQL 適用的 Cloud SQL Enterprise Plus 版。如果您打算使用 MySQL 適用的 Cloud SQL Enterprise Plus 版本,請確認該版本支援您所在的區域。請參閱「Cloud SQL for MySQL Enterprise Plus 版本區域支援」。

      如要變更版本,請使用 --edition 旗標,並搭配下列其中一個值:

      • MySQL 適用的 Cloud SQL Enterprise Plus 版本:enterprise-plus
      • MySQL 適用的 Cloud SQL Enterprise 版本enterprise
    • TIER,並填入要使用的 Cloud SQL 機型名稱。 機型會以符合 Cloud SQL 慣例的字串指定,例如 db-n1-standard-1、db-perf-optimized-N-2。如需可用機型及其搭配 Google Cloud CLI 使用的 ID 完整清單,請參閱 MySQL 適用的 Cloud SQL 說明文件中的「 機型」一節。

      使用 Google Cloud CLI 建立的執行個體預設會使用 MySQL 適用的 Cloud SQL Enterprise Plus 版,這個版本提供不同的可用機型。如要使用僅適用於 MySQL 適用的 Cloud SQL Enterprise 版本的機型,請使用選用的 --edition=enterprise 旗標指定版本。

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

      根據預設,使用 Google Cloud CLI 建立的新執行個體會採用 MySQL 適用的 Cloud SQL Enterprise Plus 版本。如果打算使用 MySQL 適用的 Cloud SQL Enterprise Plus 版本,請確認該版本支援您所在的區域。請參閱「MySQL 適用的 Cloud SQL Enterprise Plus 版本區域支援」。您可以使用選用的 --edition 旗標變更版本。

    • (選用) CONNECTION_PROFILE_NAME 為連線設定檔提供易於理解的名稱。這個值會顯示在 Google Cloud 控制台中。
    • 網路設定

      根據預設,您使用 Google Cloud CLI 建立的新執行個體會指派公開 IP 位址,並設定為使用公開 IP 連線。你可以改用其他連線方式。 詳情請參閱「設定連線能力」。

      如要使用公開 IP 連線,則不需使用其他旗標。如要透過虛擬私有雲網路對等互連或反向 SSH 通道使用私人 IP 連線,請務必符合下列啟用私人 IP 連線的其他網路需求,並在指令中加入其他旗標。

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

      如要使用私人 IP 連線 (搭配虛擬私有雲網路對接或搭配 Compute Engine VM 上的反向 SSH 通道),請加入下列額外旗標:

      • --no-enable-ip-v4:(選用) 不要將公開 IP 位址指派給目的地執行個體。您可以為目的地執行個體指派公開和私人 IP 位址,但如果使用私人 IP 連線,可能就不需要公開 IP 位址。
      • --private-network:如要將私人 IP 位址指派給目的地執行個體,請指定要指派私人 IP 位址的虛擬私有雲名稱。

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud database-migration connection-profiles \
    create mysql CONNECTION_PROFILE_ID \
      --no-async \
      --region=REGION \
      --database-version=DATABASE_VERSION \
      --tier=TIER \
      --display-name=CONNECTION_PROFILE_NAME

    Windows (PowerShell)

    gcloud database-migration connection-profiles `
    create mysql CONNECTION_PROFILE_ID `
      --no-async `
      --region=REGION `
      --database-version=DATABASE_VERSION `
      --tier=TIER `
      --display-name=CONNECTION_PROFILE_NAME

    Windows (cmd.exe)

    gcloud database-migration connection-profiles ^
    create mysql CONNECTION_PROFILE_ID ^
      --no-async ^
      --region=REGION ^
      --database-version=DATABASE_VERSION ^
      --tier=TIER ^
      --display-name=CONNECTION_PROFILE_NAME

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

    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=MIGRATION_JOB_TYPE

    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=MIGRATION_JOB_TYPE

    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=MIGRATION_JOB_TYPE

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

    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]