本页介绍了如何使用 Database Migration Service 将 SQL Server 数据库迁移到 Cloud SQL for SQL Server 实例。
迁移过程涉及以下任务:
- 从源 SQL Server 实例导出完整的数据库备份和事务日志文件。 - 您还可以在迁移过程中使用可选的差分数据库备份。 
- 将备份文件上传到 Cloud Storage 存储桶。 
- 创建目标 Cloud SQL for SQL Server 实例。 
- 在 Database Migration Service 中创建并运行迁移作业。 
- 使用 Database Migration Service 可观测性功能监控迁移作业进度。 
- 在数据完全迁移后提升迁移作业。 
费用
对于向 Cloud SQL 进行的同构迁移,使用 Database Migration Service 无需额外付费。不过,Cloud SQL 和 Cloud Storage 价格适用于网络流量费用,以及为迁移目的而创建的 Cloud SQL 和 Cloud Storage 实体。
在本文档中,您将使用Google Cloud的以下收费组件:
- Cloud Storage
- Cloud SQL
如需根据您的预计使用量来估算费用,请使用价格计算器。
准备工作
- 验证此迁移路径是否可以完全支持您的场景。 请参阅 SQL Server 已知限制。
- 考虑要在哪个区域创建目标数据库。 Database Migration Service 是一款完全区域性产品,这意味着与迁移相关的所有实体(源和目标连接配置文件、迁移作业、目标数据库、存储分区)都必须保存在单个区域中。
- 在 Google Cloud 控制台的“项目选择器”页面上,选择或 创建 Google Cloud 项目。
- 启用 Database Migration Service、Compute Engine、Cloud Storage 和 Cloud SQL Admin API。
所需的角色
如需获得使用 Database Migration Service 执行同类 SQL Server 迁移所需的权限,请让您的管理员为以下 参与迁移流程的账号授予项目的必要 IAM 角色
- 执行迁移的用户账号:
    -  
      Database Migration Admin (roles/datamigration.admin)
- 
      Storage Admin (roles/storage.admin)
- 
      Cloud SQL Editor (roles/cloudsql.editor)
 
-  
      Database Migration Admin (
- Database Migration Service 服务账号:
    -  
      Database Migration Admin (roles/datamigration.admin)
- 
      Storage Admin (roles/storage.admin)
- 
      Cloud SQL Editor (roles/cloudsql.editor)
- 
      Cloud SQL Studio 用户 (roles/cloudsql.studioUser)
 
-  
      Database Migration Admin (
如需详细了解如何授予角色,请参阅 管理访问权限。
这些预定义角色包含使用 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
 
准备源数据
如需为迁移准备源数据,请按以下步骤操作:
- 考虑迁移流程的备份策略。 Database Migration Service 支持使用差分备份和事务日志文件来迁移您在执行完整备份后出现在数据库中的数据。 
- 对源 SQL Server 数据库执行完整备份。 请务必使用正确的命名模式。 
- 准备一个 Cloud Storage 存储桶并将备份文件上传到该存储分区。请务必为您要使用的每种备份文件类型设置必要的目录结构。 
- 为 Cloud Storage 存储桶 创建来源连接配置文件。 
准备 Cloud SQL for SQL Server 目标实例
如需配置目标 Cloud SQL 实例,请执行以下步骤:
- 创建并配置 Cloud SQL for SQL Server 目标实例。 确保您使用的计算资源和内存资源足以满足您的迁移需求,并向实例的服务账号分配 Storage Admin ( - roles/storage.admin) 角色。
- 为您的 Cloud SQL 实例创建目标连接配置文件。 
创建并运行迁移作业
如需配置和运行迁移,请执行以下步骤:
- 
启动迁移作业后,目标 Cloud SQL for SQL Server 数据库会进入恢复模式,由 Database Migration Service 全代管式。当数据完全迁移后,您可以提升目标实例的级别。目标实例提升为主实例后,该实例中的所有数据库都会完全投入使用。您还会获得对这些数据库的完整写入权限。 您可以使用 Database Migration Service 可观测性功能监控迁移进度以及目标实例运行状况。请参阅 迁移作业指标。 
- 继续将新的事务日志备份文件上传到 Cloud Storage 存储桶。 - 如需涵盖执行完整备份导出后出现在源数据库中的数据,请 导出事务日志备份文件并将其上传到存储桶。Database Migration Service 会自动检测新文件、读取其内容,并将数据推送到目标实例。请参阅 自动导出事务日志。 
完成迁移
当您决定将应用切换到新的 Cloud SQL for SQL Server 实例后,请按照以下步骤完成迁移:
- 停止对源数据库的所有写入操作。您可以将其切换到只读模式,以保留操作功能。
- 备份上次的事务日志,将文件上传到存储桶,然后停止 Database Migration Service 中的增量加载阶段。
  您可以通过执行以下任一操作来实现此目的:
    - 停止 自动备份文件上传,或上传上一个事务日志文件。监控 未处理的事务日志备份文件的大小,以确定 Database Migration Service 何时完成处理该文件。
- (可选)您可以上传名称以 .trn.final后缀结尾的事务日志文件。当 Database Migration Service 检测到名称与.trn.final后缀惯例匹配的备份文件时,会停止持续加载。当 Database Migration Service 处理完该文件后,迁移作业状态会更改为 准备提升。 
 
- 提升迁移作业。
- (可选) 验证迁移数据,确保其完整无缺。