建立遷移工作

資料庫遷移服務會使用遷移工作,將來源資料庫的資料遷移至 Cloud SQL 目的地執行個體。遷移工作可協助您整理來源和目的地連線設定檔、定義遷移程序專屬設定、監控進度,以及安全地完成整個作業。

建立遷移工作包括執行下列工作:

  • 選取來源和目的地連線設定檔。

  • 選擇要遷移來源執行個體中偵測到的哪些資料庫。

  • 執行遷移工作測試,確保資料庫移轉服務能夠連線至資料來源和目的地。

  • 啟動遷移工作,並監控進度。

  • 如要將應用程式切換至新執行個體,請升級遷移工作。

事前準備

  1. 請確認符合下列規定:
    • 您有 SQL Server 備份檔案的 Cloud Storage bucket。
    • 完整備份和交易記錄檔會上傳至 Cloud Storage bucket。
    • 您擁有 Cloud Storage bucket 的來源連線設定檔。
    • 您已建立並設定目的地 Cloud SQL for SQL Server 執行個體,且該執行個體有目的地連線設定檔。
  2. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案

    前往專案選取器

  3. 啟用資料庫移轉服務、Compute Engine、Cloud Storage 和 Cloud SQL Admin API。

    啟用 API

必要的角色

如要取得在 Database Migration Service 中建立移轉工作所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱 管理存取權

這些預先定義的角色具備使用資料庫移轉服務,執行相同系統的 SQL Server 遷移作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要使用資料庫移轉服務執行相同系統的 SQL Server 遷移作業,您必須具備下列權限:

  • datamigration.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • cloudsql.instances.create
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.databases.get
  • cloudsql.databases.delete
  • cloudsql.operations.get
  • compute.machineTypes.list
  • compute.machineTypes.get
  • compute.projects.get
  • storage.buckets.create
  • storage.buckets.list
  • storage.objects.list

您或許還可透過 自訂角色或其他 預先定義的角色取得這些權限。

定義設定並建立遷移工作

如要建立遷移作業,請執行下列步驟:

控制台

  1. 前往 Google Cloud 控制台的「遷移作業」頁面。

    前往「遷移工作」

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

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

    您可以隨時按一下「儲存並結束」,暫停建立遷移工作。您輸入的所有資料都會儲存為遷移工作草稿。您之後可以完成草稿遷移工作。請參閱 更新草稿遷移作業

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

      這是遷移工作的可理解文字名稱。這個值會顯示在 Google Cloud 控制台中。

    • 遷移工作 ID

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

    • 從「來源資料庫引擎」清單中,選取「SQL Server」或「Amazon RDS for SQL Server」

    「目的地資料庫引擎」和「遷移工作類型」欄位會自動填入,且無法變更。

  4. 按一下 [儲存並繼續]
  5. 在「定義來源」頁面中,執行下列操作:
    1. 使用下拉式選單選取來源連線設定檔。

      如果還沒有來源連線設定檔,可以直接在下拉式選單中點選「建立連線設定檔」。如要進一步瞭解如何建立連線設定檔,請參閱「 建立來源連線設定檔」。

    2. 如要在遷移作業中使用差異備份檔案,請在「自訂來源設定」部分勾選「使用差異備份」核取方塊。

      如果您需要複製大量資料,而這些資料是在完整備份後出現在資料庫中,且您想以批次方式處理這些資料,而非上傳多個交易記錄檔,差異備份就非常實用。如要進一步瞭解支援的備份類型,請參閱 支援的備份檔案類型

      如果您使用差異備份,請務必在 Cloud Storage bucket 中建立 diff 資料夾。請參閱「 將備份檔案儲存在 Cloud Storage bucket」一文。

    3. 按一下 [儲存並繼續]
  6. 在「定義目的地」頁面,使用下拉式選單選取目的地連線設定檔。

    如果還沒有目的地連線設定檔,可以直接在下拉式選單中點選「建立連線設定檔」。如要進一步瞭解如何建立連線設定檔,請參閱「 建立目的地連線設定檔」。

  7. 按一下 [儲存並繼續]
  8. 在「設定遷移資料庫」頁面中,執行下列動作:
    1. 在「選取要遷移的資料庫」部分,使用核取方塊選取要納入這項遷移工作的資料庫。系統會根據您在 Cloud Storage bucket 中為備份檔案建立的資料夾,填入這份清單。

      您之後可以從遷移作業新增及移除資料庫。 請參閱「 在遷移作業中新增或移除資料庫」。

    2. (選用) 如果您使用加密備份,請提供備份的加密金鑰。如要進一步瞭解如何使用加密備份,請參閱「 使用加密備份」。

      請執行下列動作:

      • 在您選取要遷移的資料庫旁,按一下「編輯詳細資料」

        「加密」側邊面板隨即開啟。

      • 使用「加密金鑰」下拉式選單選取金鑰。
      • 在「Password」(密碼) 欄位中輸入加密金鑰密碼。
      • 按一下「儲存並結束」
  9. 按一下 [儲存並繼續]
  10. 在「測試及建立遷移工作」頁面中,執行下列動作:
    1. (選用) 按一下「測試工作」,確認資料庫移轉服務是否能成功識別所有備份檔案,並建立必要的網路連線。

      如果測試失敗,請參閱錯誤訊息來解決問題,然後再次執行測試。如要進一步瞭解可能發生的錯誤,請參閱「 診斷問題」。

    2. 按一下「建立並啟動工作」,即可開始遷移。

      如要改在其他時間執行遷移工作,請按一下「儲存」,稍後再返回執行工作。 請參閱「 啟動遷移工作」。

gcloud

這個範例使用選用的 --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。
  • COMMA_SEPARATED_DATABASE_ID_LIST,並以逗號分隔清單的形式列出要從備份檔案遷移的 SQL Server 資料庫 ID。這些 ID 必須與 Cloud Storage 中的 資料庫資料夾名稱相同。

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

  • 差異備份設定:如果您使用差異備份檔案進行遷移,請在指令中加入 --sqlserver-diff-backup 標記。根據預設,移轉工作不會使用差異備份檔案,並會忽略 Cloud Storage bucket 中的 diff 資料夾。

    如要進一步瞭解支援的備份檔案,請參閱「 支援的備份檔案類型」。

  • (選用) MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS ,其中包含本機磁碟路徑,指向設定檔,該設定檔會將路徑對應至 Cloud Storage 中的加密金鑰, 以及相關的資料庫 ID。如要進一步瞭解如何建立這個對應檔案,請參閱「使用加密備份」。

    例如:--sqlserver-encrypted-databases=~/encryption-keys-mapping-file.json

執行下列指令:

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 \
  --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST \
  --sqlserver-encrypted-databases=MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS \
  --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 `
  --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST `
  --sqlserver-encrypted-databases=MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS `
  --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 ^
  --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST ^
  --sqlserver-encrypted-databases=MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS ^
  --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]
結果

遷移工作現已建立。你可以繼續進行遷移程序:

後續步驟