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

本页面介绍了如何使用 Database Migration Service 将自行管理的 SQL Server 数据库或 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. (可选) 验证迁移数据的完整性。