總覽
資料庫遷移服務會執行遷移工作,將資料從來源資料庫執行個體遷移到目的地資料庫執行個體。
為現有目的地執行個體建立遷移工作,包括:
- 定義遷移工作設定
- 選取來源資料庫連線設定檔
- 選取現有的目的地資料庫執行個體
- 將現有執行個體降級,轉換為唯讀備用資源
- 設定來源與目的地資料庫執行個體之間的連線
- 測試遷移工作,確保您為工作提供的連線資訊有效
如要遷移至在資料庫遷移服務外部建立的目的地執行個體,請注意以下限制。舉例來說,Cloud SQL 目的地執行個體必須是空的,或只包含系統設定資料。詳情請參閱「已知限制」。
資料庫遷移服務精靈可協助您建立遷移工作。這個精靈包含下列窗格:「開始」、「定義來源」、「建立目的地」、「定義連線方法」、「設定遷移資料庫」,以及「測試及建立遷移工作」。如要瞭解如何填入每個窗格,請參閱本頁的下列各節。
使用 Google Cloud 控制台建立遷移作業
定義遷移工作的設定
按一下頁面頂端的「建立遷移工作」。
提供遷移工作名稱。選擇方便辨識的名稱,請勿在職稱中加入敏感或個人識別資訊。
保留系統自動產生的「遷移工作 ID」。
選取來源資料庫引擎。
選取目的地資料庫引擎。
選取遷移作業的目標區域。這個地區必須與目的地資料庫所在的地區相同。選擇目的地區域後,就無法變更這項設定。
指定遷移工作類型:一次性 (僅限快照) 或持續性(快照 + 持續變更)。
在「繼續之前,請先查看必要條件」部分,按一下「開啟」,查看自動產生的操作說明,瞭解如何準備來源資料庫以進行遷移。建議您在這個步驟完成這些必要條件,但您也可以在測試或啟動遷移工作前完成。詳情請參閱「設定來源」。
按一下 [儲存並繼續]。
指定來源連線設定檔的相關資訊
-
如果您已建立連線設定檔,請從現有連線設定檔清單中選取。
如果尚未建立連線設定檔,請點選下拉式清單底部的「建立連線設定檔」,然後按照「建立來源連線設定檔」一文中的步驟操作。
- 在「自訂資料轉儲設定」部分,
按一下「顯示資料轉儲設定」。
資料傾印作業的平行處理速度與來源資料庫的負載量有關。你可以使用下列設定:
- 最佳化 (建議):在效能與來源資料庫負載之間取得平衡。
- 最高:提供最高傾印速度,但可能會增加來源資料庫的負載。
- 最低:在來源資料庫中佔用的運算資源最少,但傾印處理量可能較慢。
如要使用調整後的資料轉儲平行處理設定,請務必增加來源資料庫的
max_replication_slots、max_wal_senders和max_worker_processes參數。您可以在遷移工作建立完成後 執行遷移工作測試,驗證設定。 - 按一下 [儲存並繼續]。
選取目的地執行個體
- 在「目的地執行個體的類型」選單中,選取「現有的執行個體」。
- 在「選取目的地執行個體」部分,選取目的地執行個體。
- 查看「執行個體詳細資料」部分中的資訊,然後按一下「選取並繼續」。
- 如要遷移至現有的目的地資料庫,資料庫遷移服務會降低目標執行個體的級別,並將其轉換為副本。如要表明可以安全執行降級作業,請在確認視窗中輸入目標執行個體 ID。
- 按一下「確認並繼續」。
設定來源與目的地資料庫執行個體之間的連線
- 從「連線方式」選單中,選取網路連線方式。這個方法可定義新建立的 Cloud SQL 執行個體連線至來源資料庫的方式。目前的網路連線方式包括 IP 許可清單、反向 SSH 通道、Private Service Connect 介面和虛擬私有雲對等互連。
- 如果選取 IP 許可清單網路連線方式,請指定目的地執行個體的輸出 IP 位址。如果您建立的 Cloud SQL 執行個體是高可用性執行個體,請一併加入主要和次要執行個體的傳出 IP 位址。
如果選取反向 SSH 通道網路連線方法,請選取要託管通道的 Compute Engine VM 執行個體。
指定執行個體後,Google 會提供指令碼,執行在來源和目的地資料庫之間設定通道的步驟。您需要在 Google Cloud CLI 中執行指令碼。
在可連線至來源資料庫和 Google Cloud 的機器上執行指令。
- 如果您使用私人 IP 連線方法,請選取「虛擬私有雲對等互連」或「PSC 介面」。
- 如果選取虛擬私有雲對等互連網路連線方式,請選取來源資料庫所在的虛擬私有雲網路。系統會更新 Cloud SQL 執行個體,以連線至這個網路。
- 選取網路連線方式並提供該方式的任何額外資訊後,請按一下「設定並繼續」。
設定遷移資料庫
您可以選取要遷移的資料庫。
- 在「要移轉的資料庫」清單中,選取下列其中一個選項:
- 所有資料庫:選取來源中的所有資料庫。
- 特定資料庫:可從來源的所有資料庫中選取特定資料庫。
如要遷移特定資料庫,可以篩選顯示的清單,然後選取要透過資料庫遷移服務遷移至目的地的資料庫。
如果沒有顯示清單,且畫面顯示資料庫探索錯誤,請按一下「重新載入」。如果資料庫探索失敗,這項工作會遷移所有資料庫。您可以繼續建立遷移工作,稍後再修正連線錯誤。
- 按一下 [儲存並繼續]。
測試及建立遷移工作
在最後一個步驟中,請查看遷移工作設定、來源、目的地和連線方式的摘要,然後測試遷移工作設定的有效性。如果遇到任何問題,可以修改遷移作業的設定。部分設定無法編輯。
按一下「測試作業」,確認:
- 來源資料庫已根據必要條件正確設定。
- 來源和目的地執行個體可以互相通訊。
- 已完成目的地所需的私人或公開 IP 位址更新。
- 遷移工作有效,且來源和目的地版本相容。
如果測試失敗,請在流程的適當部分解決問題,然後返回重新測試。
即使測試失敗,您還是可以建立遷移工作,但工作啟動後,可能會在執行期間的某個時間點失敗。
按一下「建立並啟動工作」,建立遷移工作並立即啟動;按一下「建立工作」,建立遷移工作但不立即啟動。
注意:如果您使用 Terraform 佈建目的地資料庫,執行遷移作業時可能會發生設定漂移。遷移作業完成前,請勿嘗試重新套用 Terraform 設定。 詳情請參閱「 Terraform 設定漂移」。
如果工作在建立時未啟動,可以前往「遷移工作」頁面,按一下「啟動」來啟動工作。
無論遷移工作何時開始,系統都會針對目的地執行個體向貴機構收費。
啟動遷移工作後,資料庫遷移服務會開始完整傾印,並短暫鎖定來源資料庫。如果來源位於 Amazon RDS 或 Amazon Aurora,資料庫遷移服務還需要在遷移作業開始時,短暫停止寫入作業 (約一分鐘內)。詳情請參閱「 資料傾印平行處理注意事項」。
遷移工作會新增至遷移工作清單,您可以直接查看。
請繼續查看遷移工作。
使用 Google Cloud CLI 建立遷移作業
使用 Google Cloud CLI 遷移至現有執行個體時,您必須手動建立目的地執行個體的連線設定檔。使用 Google Cloud 控制台時,不需要執行這項操作,因為資料庫遷移服務會為您建立及移除目的地連線設定檔。
事前準備
使用 gcloud CLI 建立遷移工作,將資料遷移至現有目的地資料庫執行個體前,請務必完成下列事項:
建立目的地連線設定檔
執行 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 postgresql 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 postgresql 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 postgresql 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指令,編輯使用--database-filter flag建立的遷移作業。
執行下列指令:
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]
降級目的地資料庫
資料庫遷移服務要求目的地資料庫執行個體在遷移期間做為讀取副本。啟動遷移工作前,請先執行 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,即可查看作業本身的狀態。
管理遷移工作
此時,遷移工作已設定完成,並連線至目的地資料庫執行個體。您可以透過下列作業管理這項設定:
選用:驗證遷移工作。
建議您先執行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
如要確認作業是否成功,可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令搭配 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 換成遷移工作 ID。
選用:擷取所選要遷移資料庫的相關資訊。
遷移特定資料庫時,資料庫遷移服務需要使用--database-filter旗標,擷取您為遷移工作選取的資料庫詳細資料。開始遷移工作前,請先執行
gcloud database-migration migration-jobs fetch-source-objects指令。詳情請展開下列章節:
gcloud database-migration migration-jobs fetch-source-objects使用下列任何指令資料之前,請先替換以下項目:
- 將 MIGRATION_JOB_ID 換成遷移工作 ID。
如果您不知道 ID,可以使用
gcloud database-migration migration-jobs list指令列出特定區域中的所有遷移工作,並查看其 ID。 - 將 REGION 替換為儲存連線設定檔的區域 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ fetch-source-objects MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` fetch-source-objects MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ fetch-source-objects MIGRATION_JOB_ID ^ --region=REGION
結果
輸出結果會與下列內容相似:
Waiting for migration job MIGRATION_JOB_ID to fetch source objects with OPERATION_ID Waiting for operation OPERATION_ID to complete...done. SOURCE_OBJECT STATE PHASE ERROR {'database': 'DATABASE_NAME', 'type': 'DATABASE'} NOT_SELECTED PHASE_UNSPECIFIED {'database': 'DATABASE_NAME', 'type': 'DATABASE'} STOPPED CDC {'code': 1, 'message': 'Internal error'}如要確認作業是否成功,可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令搭配 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 換成遷移工作 ID。
啟動遷移工作。
執行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
如要確認作業是否成功,可以查詢傳回的作業物件,或檢查遷移工作的狀態:
- 使用
gcloud database-migration migration-jobs describe指令搭配 MIGRATION_JOB_ID,查看遷移工作狀態。 - 使用
gcloud database-migration operations describe指令搭配 OPERATION_ID,查看作業本身的狀態。
- 將 MIGRATION_JOB_ID 換成遷移工作 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,查看作業本身的狀態。