資料庫移轉服務會使用遷移工作,將資料從來源資料庫遷移至 Cloud SQL 目的地執行個體。遷移工作可協助您整理來源和目的地連線設定檔、定義遷移程序專屬的設定、監控進度,並安全地完成整個作業。
建立遷移工作時,系統會執行下列工作:
選取來源和目的地連線設定檔。
選擇要遷移的來源執行個體中所偵測到的資料庫。
執行遷移工作測試,確保資料庫移轉服務能夠連線至資料來源和目的地。
啟動遷移工作並監控進度。
如要將應用程式切換至新執行個體,請將遷移工作升級。
事前準備
- 請確認您符合下列規定:
- 您有用於 SQL Server 備份檔案的 Cloud Storage 值區。
- 完整備份檔案和交易記錄檔案會上傳至 Cloud Storage bucket。
- 您有 Cloud Storage 值區的來源連線設定檔。
- 您已建立並設定目的地 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 遷移作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要使用資料庫移轉服務執行相同系統的 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
您或許還可透過 自訂角色或其他 預先定義的角色取得這些權限。
定義設定並建立遷移工作
如要建立遷移作業,請執行下列步驟:
控制台
- 前往 Google Cloud 控制台的「Migration jobs」頁面。
- 按一下「建立遷移工作」。
遷移工作設定精靈頁面會隨即開啟。 這個精靈包含多個面板,可引導您完成每個設定步驟。
您可以隨時按一下「儲存並結束」,暫停建立遷移工作。您在該時間點前輸入的所有資料都會儲存在遷移工作草稿中。您可以稍後完成草稿遷移作業。請參閱「 更新草稿遷移作業」。
- 在「開始使用」頁面中輸入下列資訊:
- 遷移工作名稱
這是遷移工作的可讀名稱。這個值會顯示在 Google Cloud 控制台中。
- 遷移工作 ID
這是遷移工作的機器可讀 ID。您可以使用資料庫移轉服務 Google Cloud CLI 指令或 API,透過這個值處理遷移作業。
- 在「來源資料庫引擎」清單中,選取「SQL Server」或「Amazon RDS for SQL Server」。
「目的地資料庫引擎」和「遷移工作類型」欄位會自動填入,且無法變更。
- 遷移工作名稱
- 按一下 [儲存並繼續]。
- 在「定義來源」頁面中執行下列操作:
- 使用下拉式選單選取來源連線設定檔。
如果您還沒有來源連線設定檔,可以直接在下拉式選單中點選「建立連線設定檔」。如要進一步瞭解如何建立連線設定檔,請參閱「 建立來源連線設定檔」。
- 如果您想在遷移作業中使用差異備份檔案,請在「自訂來源設定」部分勾選「使用差異備份」核取方塊。
如果您需要複製完整備份後資料庫中出現的大量資料,且想以大量方式處理資料,而非上傳多個交易記錄檔案,差異備份就非常實用。如要進一步瞭解支援的備份類型,請參閱「 支援的備份檔案類型」。
如果您使用差異備份,請務必在 Cloud Storage 值區中建立
diff
資料夾。請參閱「 將備份檔案儲存在 Cloud Storage bucket 中」。 - 按一下 [儲存並繼續]。
- 使用下拉式選單選取來源連線設定檔。
- 在「Define a destination」(定義目的地) 頁面上,使用下拉式選單選取目的地連線設定檔。
如果您還沒有目的地連線設定檔,可以直接在下拉式選單中點選「建立連線設定檔」。如要進一步瞭解如何建立連線設定檔,請參閱「 建立目的地連線設定檔」。
- 按一下 [儲存並繼續]。
- 在「Configure migration databases」頁面上執行下列操作:
- 在「選取要移轉的資料庫」部分,使用核取方塊選取要納入這項遷移工作的資料庫。系統會根據您在 Cloud Storage 值區中為備份檔案建立的資料夾,填入這份清單。
您之後可以新增及移除遷移作業中的資料庫。請參閱 在遷移作業中新增或移除資料庫。
- (選用) 如果您使用加密備份,請提供備份的加密金鑰。如要進一步瞭解如何使用加密備份,請參閱「
使用加密備份」。
執行下列動作:
- 按一下所選資料庫旁的「編輯詳細資料」。
開啟「加密」側邊面板。
- 使用「加密金鑰」下拉式選單選取金鑰。
- 在「Password」欄位中輸入加密金鑰密碼。
- 按一下「儲存並結束」。
- 按一下所選資料庫旁的「編輯詳細資料」。
- 在「選取要移轉的資料庫」部分,使用核取方塊選取要納入這項遷移工作的資料庫。系統會根據您在 Cloud Storage 值區中為備份檔案建立的資料夾,填入這份清單。
- 按一下 [儲存並繼續]。
- 在「Test and create migration job」中,執行下列操作:
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 值區中的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]
遷移工作現已建立。您可以繼續遷移程序: