创建迁移作业

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 Server 或 Amazon 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]
结果

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

后续步骤