資料庫遷移服務會執行遷移工作,將資料從來源資料庫執行個體遷移到目的地資料庫執行個體。為現有目的地執行個體建立遷移作業,包括:
- 定義遷移工作設定
- 選取來源資料庫連線設定檔
- 選取現有的目的地資料庫執行個體
- 將現有執行個體降級,轉換為唯讀副本
- 設定來源與目的地資料庫執行個體之間的連線
- 測試遷移工作,確保您為工作提供的連線資訊有效
事前準備
建立遷移工作時,請務必先確認下列事項:
- 確認這項遷移類型支援您的情境。 舉例來說,如要遷移至在資料庫遷移服務以外建立的資料庫,Cloud SQL 目的地執行個體必須為空白,或僅包含系統設定資料。詳情請參閱「已知限制」。
- 建立必要資源、設定來源資料庫,並建立網路連線。建立遷移工作是完整遷移程序中的其中一個步驟。建議您按照逐步遷移導覽操作,並在執行遷移工作步驟時返回此程序。請參閱「 遷移至現有執行個體」。
使用 Google Cloud 控制台建立遷移工作
使用 Google Cloud 控制台遷移至現有執行個體時,資料庫遷移服務會自動為您管理目的地連線設定檔。如要使用 Google Cloud 控制台,為現有執行個體建立遷移作業,請按照下列步驟操作:
定義遷移工作設定
- 前往 Google Cloud 控制台的「Migration jobs」(遷移工作) 頁面。
- 點選「建立遷移工作」。
遷移工作設定精靈頁面隨即開啟。 這個精靈包含多個面板,可引導您完成各項設定步驟。
如要隨時暫停建立遷移工作,請按一下「儲存並結束」。您輸入的所有資料都會儲存為遷移工作草稿。您可以稍後再完成遷移工作草稿。
- 在「開始使用」頁面中輸入下列資訊:
- 遷移工作名稱
這是遷移工作的人類可讀名稱。這個值會顯示在 Google Cloud 控制台。
- 遷移工作 ID
這是遷移工作的機器可讀 ID。 您可以使用這個值,透過資料庫遷移服務 Google Cloud CLI 指令或 API,處理遷移工作。
- 從「Source database engine」(來源資料庫引擎) 清單中選取「MySQL」。
「目的地資料庫引擎」欄位會自動填入,無法變更。
- 選取儲存遷移工作的區域。
資料庫遷移服務是完全區域性的產品,也就是說,與遷移作業相關的所有實體 (來源和目的地連線設定檔、遷移工作、目的地資料庫) 都必須儲存在單一區域。根據需要資料的服務位置選取區域,例如 Compute Engine 執行個體或 App Engine 應用程式,以及其他服務。選擇目的地區域後,就無法變更這項設定。
- 遷移工作名稱
- 按一下 [儲存並繼續]。
指定來源連線設定檔的相關資訊
在「定義來源」頁面中,執行下列步驟:
- 在「Source connection profile」(來源連線設定檔) 下拉式選單中,選取來源資料庫的連線設定檔。
- 在「自訂完整傾印設定」部分,按一下「編輯設定」。
- 在「Edit full dump configuration」(編輯完整轉儲設定) 面板中,從「Full dump method」(完整轉儲方法) 下拉式選單中選取下列其中一項:
- 實體:如要使用 Percona XtraBackup 公用程式提供自己的備份檔案,請選取這個選項。這個方法需要額外的準備步驟。如需使用 Percona XtraBackup 產生的實體備份檔案的完整指南,請參閱「使用 Percona XtraBackup 實體檔案遷移資料庫」。
- 邏輯式:如要使用
mysqldump公用程式建立的邏輯備份檔案,請選取這個選項。資料庫遷移服務可自動產生這個備份檔案,您也可以自行提供副本。
- 編輯其餘的 dump 設定。執行下列任一操作:
- 如果您使用實體備份檔案,請在「提供資料夾」中按一下「瀏覽」,然後選取您上傳完整 dump 檔案的資料夾。請務必選取含有完整備份檔案的專用資料夾,而非儲存空間 bucket 本身。
如果您使用邏輯備份檔案,請設定資料轉儲平行處理或轉儲標記。
展開這個部分,查看完整的邏輯備份檔案步驟
在「Choose how to generate your dump file」(選擇如何產生 dump 檔案) 區段中,使用下列其中一個選項:
自動生成 (建議)
建議您選取這個選項,因為資料庫遷移服務一律會在建立並啟動遷移工作後,產生初始資料庫 dump 檔案。
資料庫遷移服務會使用這個檔案,重現來源資料庫的原始物件定義和資料表資料,以便將這項資訊遷移至目的地 Cloud SQL 資料庫執行個體。
如果您使用自動生成傾印檔,請在「設定資料傾印作業」部分選取資料庫遷移服務應執行的作業類型:
- 資料轉儲平行處理:使用高效能平行處理選項,適用於遷移至 MySQL 5.7 或 8 版。
資料平行處理的速度與來源資料庫的負載量有關:
- 最佳 (建議):兼顧效能,並盡可能減輕來源資料庫的負擔。
- 最大:提供最快的轉儲速度,但可能會增加來源資料庫的負載。
- 最低:在來源資料庫上使用最少的運算資源,但傾印處理量可能較低。
- Dump 旗標:這個選項與「資料 dump 平行處理程度」互斥。
使用這項設定,直接為用於建立 dump 檔案的
mysqldump公用程式設定旗標。如要新增標記,請按照下列步驟操作:
- 按一下「新增旗標」。
選取下列其中一個標記:
add-locks:這個旗標會以LOCK TABLES和UNLOCK TABLES陳述式,包圍 dump 檔案中包含的每個資料表。這樣一來,將 dump 檔案載入目的地執行個體時,插入作業的速度會更快。ignore-error:使用這個旗標輸入以半形逗號分隔的錯誤編號清單。 這些數字代表mysqldump公用程式會忽略的錯誤。max-allowed-packet:使用這個旗標設定緩衝區大小上限,供 MySQL 用戶端與來源 MySQL 資料庫之間的通訊使用。緩衝區的預設大小為 24 MB,最大為 1 GB。
- 點選「完成」。
- 針對要新增的每個旗標重複上述步驟。
如要移除標記,請按一下標記所在資料列右側的垃圾桶圖示。
- 資料轉儲平行處理:使用高效能平行處理選項,適用於遷移至 MySQL 5.7 或 8 版。
自行提供
不建議使用這個選項,因為資料庫遷移服務預設會在遷移工作執行期間執行初始傾印。
如要使用自己的 dump 檔案,請選取「自行提供」,然後按一下「瀏覽」,選取檔案 (如果使用多個檔案,請選取整個 Cloud Storage 資料夾),再點選「選取」。
請確認傾印是在過去 24 小時內產生,且符合傾印規定。
- 按一下 [儲存並繼續]。
選取目的地 Cloud SQL 執行個體
- 在「目的地執行個體的類型」選單中,選取「現有的執行個體」。
- 在「Select destination instance」(選取目的地執行個體) 部分,選取目的地執行個體。
-
查看「Instance details」(執行個體詳細資料) 區段中的資訊,然後按一下「Select and continue」(選取並繼續)。
如要遷移至現有的目的地資料庫,資料庫遷移服務會將目標執行個體降級,並轉換為副本。如要表明可以安全執行降級作業,請在確認視窗中輸入目的地執行個體 ID。
- 按一下「確認並繼續」。
設定來源與目的地資料庫執行個體之間的連線
從「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」(設定並繼續)。
設定遷移資料庫
您可以遷移來源執行個體中的所有資料庫,或只選擇特定資料庫。目的地執行個體不得包含與所選遷移資料庫同名的資料庫。如果資料庫遷移服務遇到資料庫名稱衝突,系統會在遷移前捨棄目的地中的違規資料庫。
- 從「Databases to migrate」(要遷移的資料庫) 清單中,選取下列其中一個選項:
- 所有資料庫:選取來源上的所有資料庫。
- 「Specific databases」(特定資料庫):可從來源的所有資料庫中選取特定資料庫。
如要遷移特定資料庫,可以篩選顯示的清單,並選取要透過資料庫遷移服務遷移至目的地的資料庫。
如果清單未顯示,且出現資料庫探索錯誤,請按一下「重新載入」。如果資料庫探索失敗,工作會遷移所有資料庫。您可以繼續建立遷移工作,稍後再修正連線錯誤。
- 按一下 [儲存並繼續]。
測試、建立及執行遷移工作
在最後一個步驟中,請查看遷移工作設定、來源、目的地和連線方式的摘要,然後測試遷移工作設定是否有效。如果遇到任何問題,可以修改遷移工作的設定。部分設定無法編輯。
-
在「測試及建立遷移工作」頁面,點選「測試工作」。
如果測試失敗,您可以在流程的適當部分解決問題,然後返回重新測試。如要瞭解如何排解遷移工作測試失敗的問題,請參閱「診斷 MySQL 問題」
-
遷移工作測試完成後,按一下「Create and start job」(建立並啟動工作),即可建立遷移工作並立即啟動;或者,您也可以按一下「Create job」(建立工作),建立遷移工作,但不立即啟動。
如果工作在建立時未啟動,可以前往「Migration jobs」(遷移工作) 頁面,然後按一下「START」(啟動) 啟動工作。無論遷移工作何時開始,貴組織都必須為目的地執行個體的存在付費。
遷移作業正在進行中。啟動遷移工作後,資料庫遷移服務會開始完整轉儲,並短暫鎖定來源資料庫。如果來源位於 Amazon RDS 或 Amazon Aurora,資料庫遷移服務還會在遷移作業開始時,短暫停止寫入作業 (約一分鐘內)。詳情請參閱「已知限制」。
- 請繼續查看遷移工作。
使用 Google Cloud CLI 建立遷移工作
使用 Google Cloud CLI 遷移至現有執行個體時,必須手動建立目的地執行個體的連線設定檔。使用 Google Cloud 控制台時,您不需要執行這項操作,因為資料庫遷移服務會為您建立及移除目的地連線設定檔。
建立目的地連線設定檔
執行 gcloud database-migration connection-profiles create 指令,為現有目的地執行個體建立目的地連線設定檔:
這個範例使用選用的 --no-async 旗標,因此所有作業都會同步執行。也就是說,部分指令可能需要一段時間才能完成。您可以略過 --no-async 旗標,以非同步方式執行指令。如果這麼做,您必須使用 gcloud database-migration operations describe 指令,確認作業是否成功。
使用下列任何指令資料前,請先替換以下項目:
- CONNECTION_PROFILE_ID,其中包含連線設定檔的機器可讀取 ID。
- 將 REGION 替換為要儲存連線設定檔的區域 ID。
- 將 DESTINATION_INSTANCE_ID 替換為目的地執行個體的執行個體 ID。
- (選用) CONNECTION_PROFILE_NAME 為連線設定檔提供易於理解的名稱。這個值會顯示在 Google Cloud 控制台中。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles \ create mysql CONNECTION_PROFILE_ID \ --no-async \ --cloudsql-instance=DESTINATION_INSTANCE_ID \ --region=REGION \ --display-name=CONNECTION_PROFILE_NAME
Windows (PowerShell)
gcloud database-migration connection-profiles ` create mysql CONNECTION_PROFILE_ID ` --no-async ` --cloudsql-instance=DESTINATION_INSTANCE_ID ` --region=REGION ` --display-name=CONNECTION_PROFILE_NAME
Windows (cmd.exe)
gcloud database-migration connection-profiles ^ create mysql CONNECTION_PROFILE_ID ^ --no-async ^ --cloudsql-instance=DESTINATION_INSTANCE_ID ^ --region=REGION ^ --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]
建立遷移工作
這個範例使用選用的 --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= \
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= `
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= ^
您應該會收到類似以下的回應:
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]
降級目的地資料庫
資料庫遷移服務要求目的地資料庫執行個體在遷移期間做為唯讀副本。啟動遷移工作前,請執行 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
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令查看遷移工作狀態。 - 請搭配使用
gcloud database-migration operations describe和 OPERATION_ID,查看作業本身的狀態。
管理遷移工作
此時,遷移工作已設定完畢,並連線至目的地資料庫執行個體。您可以使用 verify、start、stop、restart 和 resume 作業管理這項功能。
驗證遷移工作
建議您先執行 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
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令和 OPERATION_ID,查看作業本身的狀態。
啟動遷移工作
執行 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
如要確認作業是否成功,您可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,即可查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令和 OPERATION_ID,查看作業本身的狀態。
升級遷移工作
遷移作業進入變更資料擷取 (CDC) 階段後,您就可以將目的地資料庫執行個體從唯讀副本升級為獨立執行個體。執行 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
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,即可查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令和 OPERATION_ID,查看作業本身的狀態。