将 SQL Server 数据库迁移到 Cloud SQL for SQL Server

本页面介绍如何使用 Database Migration Service 将自管理的或 Amazon RDS SQL Server 数据库迁移到 Cloud SQL for SQL Server 实例。 如需了解如何从 Cloud SQL for SQL Server 实例进行迁移, 请参阅 Cloud SQL for SQL Server 源的迁移指南

迁移过程涉及以下任务:

  1. 从源 SQL Server 实例导出完整数据库备份和事务日志文件。

    您还可以在迁移过程中使用可选的差分数据库备份。

  2. 将备份文件上传到 Cloud Storage 存储桶。

  3. 创建 Cloud SQL for SQL Server 目标实例。

  4. 在 Database Migration Service 中创建并运行迁移作业。

  5. 使用 Database Migration Service 可观测性功能监控迁移作业进度。

  6. 在数据完全迁移后提升迁移作业。

费用

对于到 Cloud SQL 的同构迁移,Database Migration Service 无需额外付费。不过,Cloud SQL 和 Cloud Storage 价格适用于网络费用,以及为迁移目的而创建的 Cloud SQL 和 Cloud Storage 实体。

在本文档中,您将使用的以下收费组件: Google Cloud:

  • Cloud Storage
  • Cloud SQL

如需根据您的预计使用量来估算费用,请使用 价格计算器

准备工作

  1. 验证此迁移路径是否可以完全支持您的场景。 请参阅 SQL Server 已知限制
  2. 考虑要在哪个区域创建目标数据库。 Database Migration Service 是一种完全区域性的产品,这意味着与迁移相关的所有实体 (源和目标连接配置文件、 迁移作业、目标数据库、存储分区)都必须保存在单个区域中。
  3. 在 Google Cloud 控制台的项目选择器页面上,选择或 创建项目。 Google Cloud

    转到“项目选择器”

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

    启用 API

所需角色

如需获得使用 Database Migration Service 执行同构 SQL Server 迁移所需的权限,请让管理员为迁移过程中涉及的以下 账号授予项目的必要 IAM 角色

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

这些预定义角色包含使用 Database Migration Service 执行同构 SQL Server 迁移所需的权限。如需查看所需的确切权限,请展开所需权限 部分:

所需权限

如需使用 Database Migration Service 执行同构 SQL Server 迁移,需要以下权限:

  • 执行迁移的用户账号:
    • datamigration.*
    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • cloudsql.operations.get
    • cloudsql.instances.create
    • cloudsql.instances.get
    • cloudsql.instances.list
    • cloudsql.instances.import
    • cloudsql.databases.get
    • cloudsql.databases.list
    • cloudsql.databases.delete
    • compute.machineTypes.list
    • compute.machineTypes.get
    • compute.projects.get
    • storage.buckets.create
    • storage.buckets.list
  • Database Migration Service 服务帐号:
    • datamigration.*
    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • cloudsql.instances.create
    • cloudsql.instances.get
    • cloudsql.instances.list
    • cloudsql.instances.executeSql
    • storage.objects.create
    • storage.objects.list

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

准备源数据

如需为迁移准备源数据,请按以下步骤操作:

  1. 考虑迁移过程的备份策略。 Database Migration Service 支持使用差分备份和事务日志文件来迁移在您进行完整备份后出现在数据库中的数据。

  2. 对源 SQL Server 数据库执行完整备份。 请确保使用正确的命名模式。

  3. 准备 Cloud Storage 存储桶,并将备份文件上传到该存储分区。 请确保为要使用的每种备份文件类型设置必要的目录结构。

  4. 创建源连接配置文件 为 Cloud Storage 存储桶。

准备 Cloud SQL for SQL Server 目标实例

如需配置 Cloud SQL 目标实例,请执行以下步骤:

  1. 创建并配置 Cloud SQL for SQL Server 目标实例。 请确保使用足够的计算和内存资源来满足迁移需求,并将 Storage Admin (roles/storage.admin) 角色分配给实例的服务帐号。

  2. 为 Cloud SQL 实例创建目标 连接配置文件

创建并运行迁移作业

如需配置和运行迁移,请执行以下步骤:

  1. 创建并运行迁移作业

    启动迁移作业后,Cloud SQL for SQL Server 目标数据库将进入恢复模式,并由 Database Migration Service 全代管式。当数据完全迁移后,您可以提升目标实例。提升目标实例后,该实例中的所有数据库都将完全正常运行。您还将获得对这些数据库的完整写入权限。

    您可以使用 Database Migration Service 可观测性功能监控迁移进度以及目标实例的运行状况。请参阅 迁移作业指标

  2. 继续将新的事务日志备份文件上传到 Cloud Storage 存储桶。

    如需涵盖在执行完整备份导出后出现在源数据库中的数据,请导出事务日志备份文件并将其上传到存储桶。Database Migration Service 会自动检测新文件,读取其内容,并将数据推送到目标实例。 请参阅 自动执行事务日志导出

完成迁移

当您决定将应用切换到新的 Cloud SQL for SQL Server 实例时,请按照以下步骤完成迁移:

  1. 停止对源数据库的所有写入操作。您可以将它们 切换到只读模式以保留操作功能。
  2. 进行最后一次事务日志备份,将文件上传到存储 桶,然后在 Database Migration Service 中停止增量加载阶段。 您可以通过执行以下操作之一来实现此结果:
  3. 提升迁移作业
  4. (可选) 验证迁移数据的完整性。