本頁說明如何使用 Google Cloud CLI,為 SQL Server 適用的 Cloud SQL 來源建立遷移工作。如要進一步瞭解如何使用資料庫遷移服務,在 SQL Server 適用的 Cloud SQL 執行個體之間遷移資料,請參閱 SQL Server 適用的 Cloud SQL 來源的遷移指南。
事前準備
- 請確認符合下列規定:
- 您有儲存 SQL Server 備份檔案的 Cloud Storage bucket。
- 您擁有來源執行個體的來源連線設定檔。
- 您已建立並設定目的地 SQL Server 適用的 Cloud SQL 執行個體,且該執行個體有目的地連線設定檔。
- 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
- 啟用資料庫遷移服務、Compute Engine、Cloud Storage 和 Cloud SQL Admin API。
必要的角色
如要取得在資料庫遷移服務中建立遷移作業所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
資料庫遷移管理員 (
roles/datamigration.admin) -
儲存空間管理員 (
roles/storage.admin) -
Cloud SQL 編輯者 (
roles/cloudsql.editor)
如要進一步瞭解如何授予角色,請參閱「 管理存取權」。
這些預先定義的角色具備使用資料庫移轉服務,執行相同系統的 SQL Server 遷移作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要使用資料庫遷移服務執行同質 SQL Server 遷移作業,您必須具備下列權限:
datamigration.*resourcemanager.projects.getresourcemanager.projects.listcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.databases.getcloudsql.databases.deletecloudsql.operations.getcompute.machineTypes.listcompute.machineTypes.getcompute.projects.getstorage.buckets.createstorage.buckets.liststorage.objects.list
您或許還可透過 自訂角色或其他 預先定義的角色取得這些權限。
定義設定並建立遷移工作
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。
- DESTINATION_PROJECT_ID,其中 Google Cloud 是您目的地 SQL Server 適用的 Cloud SQL 執行個體的專案 ID。這個專案必須與您啟用資料庫遷移服務 API 的專案相同,且您會在該專案中建立遷移工作。
- COMMA_SEPARATED_DATABASE_ID_LIST,並以逗號分隔的清單形式,列出要從備份檔案遷移的 SQL Server 資料庫 ID。
執行下列指令:
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 \ --project=DESTINATION_PROJECT_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 ` --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST ` --project=DESTINATION_PROJECT_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 ^ --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST ^ --project=DESTINATION_PROJECT_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]
遷移工作現已建立。您可以繼續進行遷移程序: