Database Migration Service 会使用迁移作业将数据从源数据库迁移到 Cloud SQL 目标实例。迁移作业可帮助您整理来源和目标连接配置文件、定义特定于迁移过程的设置、监控进度,以及安全地完成整个操作。
创建迁移作业包括执行以下任务:
选择源端和目标端连接配置文件。
选择要迁移源实例中检测到的数据库。
执行迁移作业测试,以确保 Database Migration Service 能够连接到您的数据源和目标位置。
启动迁移作业并监控进度。
当您想要将应用切换到新实例时,提升迁移作业。
准备工作
- 确保您满足以下要求:
- 您有一个用于存储 SQL Server 备份文件的 Cloud Storage 存储桶。
- 您的完整备份和事务日志文件会上传到 Cloud Storage 存储桶。
- 您有 Cloud Storage 存储桶的源连接配置文件。
- 您已创建并配置了目标 Cloud SQL for SQL Server 实例,并且拥有该实例的目标连接配置文件。
- 在 Google Cloud 控制台中,在项目选择器页面上,选择或 创建一个 Google Cloud 项目。
- 启用 Database Migration Service、Compute Engine、Cloud Storage 和 Cloud SQL Admin API。
所需的角色
如需获得在 Database Migration Service 中创建迁移作业所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
Database Migration Admin (
roles/datamigration.admin
) -
Storage Admin (
roles/storage.admin
) -
Cloud SQL Editor (
roles/cloudsql.editor
)
如需详细了解如何授予角色,请参阅 管理访问权限。
这些预定义角色包含使用 Database Migration Service 执行同质 SQL Server 迁移所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
若要使用 Database Migration Service 执行同构 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 控制台中,前往迁移作业页面。
- 点击创建迁移作业。
系统随即会打开迁移作业配置向导页面。 此向导包含多个面板,可引导您完成每个配置步骤。
您可以随时点击保存并退出,暂停迁移作业的创建。您在此之前输入的所有数据都会保存在迁移作业草稿中。 您可以稍后完成草稿迁移作业。请参阅 更新草稿迁移作业。
- 在开始页面上,输入以下信息:
- 迁移作业名称
这是迁移作业的直观易懂的名称。此值会显示在 Google Cloud 控制台中。
- 迁移作业 ID
这是您的迁移作业的机器可读标识符。 您可以使用此值通过 Database Migration Service Google Cloud CLI 命令或 API 处理迁移作业。
- 从源数据库引擎列表中,选择 SQL Server 或 Amazon RDS for SQL Server。
系统会自动填充目标数据库引擎和迁移作业类型字段,且这些字段无法更改。
- 迁移作业名称
- 点击保存并继续。
- 在定义来源页面上,执行以下操作:
- 使用下拉菜单选择您的来源连接配置文件。
如果您还没有来源连接配置文件,可以直接在下拉菜单中点击创建连接配置文件。如需详细了解如何创建连接配置文件,请参阅 创建来源连接配置文件。
- 如果您想在迁移过程中使用差分备份文件,请在自定义来源配置部分中选中使用差分备份复选框。
如果您需要复制自完整备份以来出现在数据库中的大量数据,并且希望批量处理这些数据,而不是上传多个事务日志文件,则差分备份非常有用。 如需详细了解支持的备份类型,请参阅 支持的备份文件类型。
如果您使用差分备份,请务必在 Cloud Storage 存储桶中创建
diff
文件夹。请参阅 将备份文件存储在 Cloud Storage 存储桶中。 - 点击保存并继续。
- 使用下拉菜单选择您的来源连接配置文件。
- 在定义目的地页面上,使用下拉菜单选择目标连接配置文件。
如果您尚无目标连接配置文件,可以直接在下拉菜单中点击创建连接配置文件。如需详细了解如何创建连接配置文件,请参阅 创建目标连接配置文件。
- 点击保存并继续。
- 在配置迁移数据库页面上,执行以下操作:
- 在选择要迁移的数据库部分,使用复选框选择要包含在此迁移作业中的哪些数据库。此列表会根据您在 Cloud Storage 存储桶中为备份文件创建的文件夹进行填充。
您稍后可以向迁移作业中添加和移除数据库。 请参阅 向迁移作业添加或从中移除数据库。
- (可选)如果您使用加密备份,请提供备份的加密密钥。如需详细了解如何使用加密备份,请参阅
使用加密备份。
执行以下操作:
- 点击您要迁移的数据库旁边的修改详细信息。
系统随即会打开加密侧边栏。
- 使用加密密钥下拉菜单选择您的密钥。
- 在 Password(密码)字段中,输入加密密钥密码。
- 点击保存并退出。
- 点击您要迁移的数据库旁边的修改详细信息。
- 在选择要迁移的数据库部分,使用复选框选择要包含在此迁移作业中的哪些数据库。此列表会根据您在 Cloud Storage 存储桶中为备份文件创建的文件夹进行填充。
- 点击保存并继续。
- 在测试并创建迁移作业页面上,执行以下操作:
gcloud
此示例使用可选的 --no-async
标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过 --no-async
标志以异步运行命令。如果是,您需要使用
gcloud database-migration operations describe
命令来验证操作是否成功。
在使用下面的命令数据之前,请先进行以下替换:
- MIGRATION_JOB_ID,其中包含可供机器读取的迁移作业标识符。您可以使用此值通过 Database Migration Service Google Cloud CLI 命令或 API 处理迁移作业。
- REGION 替换为您要将迁移作业保存到的区域标识符。
- MIGRATION_JOB_NAME 为迁移作业提供一个直观易懂的名称。此值显示在 Google Cloud 控制台中的 Database Migration Service 中。
- SOURCE_CONNECTION_PROFILE_ID,其中包含来源连接配置文件的机器可读标识符。
- DESTINATION_CONNECTION_PROFILE_ID,其中包含目标连接配置文件的机器可读标识符。
- COMMA_SEPARATED_DATABASE_ID_LIST,其中包含要从备份文件迁移的 SQL Server 的数据库标识符的逗号分隔列表。这些标识符需要与
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 中的加密密钥路径与其相关数据库标识符进行映射。如需详细了解如何创建此映射文件,请参阅使用加密备份。
例如:
--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]
迁移作业现已创建。您可以继续执行迁移流程: