创建迁移作业

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

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

后续步骤