本页面介绍了如何使用 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 User (
roles/cloudsql.studioUser)
-
Database Migration Admin (
如需详细了解如何授予角色,请参阅 管理访问权限。
这些预定义角色包含使用 Database Migration Service 执行同构 SQL Server 迁移所需的权限。如需查看所需的确切权限,请展开所需权限 部分:
所需权限
使用 Database Migration Service 执行同构 SQL Server 迁移需要以下权限:
- 执行迁移的用户账号:
datamigration.*resourcemanager.projects.getresourcemanager.projects.listcloudsql.operations.getcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.importcloudsql.databases.getcloudsql.databases.listcloudsql.databases.deletecompute.machineTypes.listcompute.machineTypes.getcompute.projects.getstorage.buckets.createstorage.buckets.list
- Database Migration Service 服务帐号:
datamigration.*resourcemanager.projects.getresourcemanager.projects.listcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.executeSqlstorage.objects.createstorage.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 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 完成该文件的处理后,迁移 作业状态将更改为 准备提升。
- 提升迁移作业。
- (可选) 验证迁移数据的完整性。