创建迁移作业

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. (可选)如果您使用加密备份,请提供备份的加密密钥。如需详细了解如何使用加密备份,请参阅 使用加密备份

      执行以下操作:

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

        系统随即会打开加密侧边栏。

      • 使用加密密钥下拉菜单选择您的密钥。
      • Password(密码)字段中,输入加密密钥密码。
      • 点击保存并退出
  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]
结果

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

后续步骤