创建迁移作业

Database Migration Service 会使用迁移作业将数据从源数据库迁移到 Cloud SQL 目标实例。迁移作业可帮助您整理源端和目标端的连接配置文件、定义迁移过程中的特定设置、监控进度,并安全地完成整个操作。

创建迁移作业包括执行以下任务:

  • 选择源端和目标端的连接配置文件。

  • 选择要迁移的源实例中检测到的数据库。

  • 执行迁移作业测试,以确保 Database Migration Service 能够连接到您的数据源和目标位置。

  • 启动迁移作业并监控进度。

  • 在您想要将应用切换到新实例时,提升迁移作业。

准备工作

  1. 确保满足以下要求:
    • 您有一个用于存储 SQL Server 备份文件的 Cloud Storage 存储桶。
    • 您的完整备份和事务日志文件已上传到 Cloud Storage 存储桶。
    • 您有一个 Cloud Storage 存储桶的源连接配置文件。
    • 您已创建并配置 Cloud SQL for SQL Server 目标实例,并且 您有一个该实例的目标连接配置文件。
  2. 在 Google Cloud 控制台的项目选择器页面上,选择或 创建 Google Cloud 项目

    转到“项目选择器”

  3. 启用 Database Migration Service、Compute Engine、Cloud Storage 和 Cloud SQL Admin API。

    启用 API

所需角色

如需获得在 Database Migration Service 中创建迁移作业所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅 管理访问权限

这些预定义角色包含使用 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

您也可以使用 自定义角色或其他 预定义角色来获取这些权限。

定义设置并创建迁移作业

如需创建迁移作业,请执行以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往 迁移作业 页面。

    前往“迁移作业”

  2. 点击创建迁移作业

    系统会打开迁移作业配置向导页面。 此向导包含多个面板,可引导您完成 每个配置步骤。

    您可以随时点击保存并退出来暂停创建迁移作业。您在该时间点之前输入的所有数据都会保存在草稿迁移作业中。 您可以稍后完成草稿迁移作业。请参阅 更新草稿迁移作业

  3. 使用入门 页面上,输入以下信息:
    • 迁移作业名称

      这是迁移作业的用户可读名称。此 值会显示在 Google Cloud 控制台中。

    • 迁移作业 ID

      这是迁移作业的机器可读标识符。 您可以使用此值,通过使用 Database Migration Service Google Cloud CLI 命令或 API 来处理迁移作业。

    • 源数据库引擎 列表中,选择 SQL ServerAmazon RDS for SQL Server

    目标数据库引擎迁移作业类型 字段会自动填充,并且无法更改。

  4. 点击保存并继续
  5. 定义源 页面上,执行以下操作:
    1. 使用下拉菜单选择源连接配置文件。

      如果您还没有源连接配置文件, 可以直接在 下拉菜单中点击创建连接配置文件。如需详细了解如何创建连接配置文件, 请参阅 创建源连接配置文件

    2. 如果您想在迁移中使用差异备份文件, 请在 自定义源配置 部分中选中 使用差异备份 复选框。

      如果您需要复制自完整备份以来数据库中出现的大量数据 并且想要批量处理这些数据,而不是上传多个事务日志文件,则差异备份非常有用。 如需详细了解支持的备份类型,请参阅 支持的备份文件类型

      如果您使用差异备份,请确保在 Cloud Storage 存储桶中创建 diff 文件夹。请参阅 将备份文件存储在 Cloud Storage 存储桶中

    3. 点击保存并继续
  6. 定义目标位置 页面上,使用下拉菜单选择目标连接配置文件。

    如果您还没有目标连接配置文件, 可以直接在 下拉菜单中点击创建连接配置文件 如需详细了解如何创建连接配置文件,请参阅创建目标连接配置文件。

  7. 点击保存并继续
  8. 配置迁移数据库 页面上,执行以下操作:
    1. 选择要迁移的数据库 部分中,使用 复选框选择要在此 迁移作业中包含的数据库。此列表会根据您在 Cloud Storage 存储桶中为备份文件创建的文件夹进行填充。

      您可以稍后向迁移作业添加和从中移除数据库。 请参阅 向迁移作业添加或从中移除数据库

    2. (可选)如果您使用加密备份,请提供备份的加密 密钥。如需详细了解如何使用加密备份,请参阅 使用加密备份

      执行以下操作:

      • 点击您选择要迁移的数据库旁边的修改详细信息

        系统会打开加密 侧边栏。

      • 使用加密密钥 下拉菜单选择 您的密钥。
      • 密码 字段中,输入加密密钥密码。
      • 点击保存并退出
  9. 点击保存并继续
  10. 测试并创建迁移作业页面上,执行以下操作:
    1. (可选)点击测试作业 ,以验证 Database Migration Service 是否可以成功识别所有备份文件并建立 必要的网络连接。

      如果测试失败,您可以查阅错误消息来解决问题,然后再次运行测试。如需详细了解可能出现的 错误,请参阅 诊断问题

    2. 点击创建并启动作业 以开始迁移。

      如果您想在其他时间执行迁移作业, 请点击 保存 ,稍后再返回运行该作业。 请参阅 启动迁移作业

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]
结果

迁移作业现已创建。您可以继续执行迁移过程:

后续步骤