

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# SQL Server 数据库迁移策略
<a name="strategies"></a>

总体而言，有两个选项将 SQL Server 数据库从本地迁移到 AWS 云：要么留在 SQL Server 上（*[同构迁移](homogeneous-migration.md)*），要么移出 SQL Server（*[异构迁移](heterogeneous-migration.md)*）。在同构迁移中，您无需更改数据库引擎。也就是说，您的目标数据库也是 SQL Server 数据库。在异构迁移中，您可以将 SQL Server 数据库切换到开源数据库引擎，例如 MySQL、PostgreSQL 或 MariaDB，或者切换到 AWS 云原生数据库，例如 Amazon Aurora、Amazon DynamoDB 或 Amazon Redshift。

有三种常见策略将您 SQL Server 数据库迁移到 AWS：重新托管、更换平台和重新架构（重构）。这些策略是应用程序迁移策略的 [7 R](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/planning-phase.html) 的一部分并且在下表中介绍。


****  

| 策略 | 类型 | 何时选择 | 示例 | 
| --- | --- | --- | --- | 
| **重新托管** | 同构 | 您希望按原样迁移 SQL Server 数据库，无论是否更改操作系统、数据库软件或配置。 | SQL Server 到 Amazon EC2 | 
| **更换平台** | 同构 | 您希望通过使用完全托管的数据库产品来减少管理数据库实例所花费的时间。 | SQL Server 到 Amazon RDS for SQL Server | 
| **重新架构（重构）** | 异构 | 您想要重新构建、重写和重新架构数据库与应用程序，以利用开源和云原生数据库功能。 | SQL Server 到 Amazon Aurora PostgreSQL、MySQL 或 MariaDB | 

如果您想在将您的 SQL Server 数据库重新托管或更换平台之间抉择，请参阅本指南后面的[在 Amazon EC2 和 Amazon RDS 之间进行选择](comparison.md)，以了解所支持功能的并排比较。

## 选择正确的迁移策略
<a name="choose-strategy"></a>

选择正确的策略取决于您的业务要求、资源限制、迁移时间表和成本考虑因素。下图显示了迁移所涉及的工作量和复杂性，包括所有七种策略。

 ![\[Comparison of SQL Server migration strategies\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/migration-sql-server/images/migration-strategy-comparison.png) 

重构 SQL Server 数据库并迁移到开源或 AWS 云原生数据库，例如 Amazon Aurora PostgreSQL 兼容版或 Aurora MySQL 兼容版，可以帮助您实现数据库的现代化和优化。通过迁移到开源数据库，您可以避免昂贵的许可（从而降低成本）、供应商锁定期和审计。但是，根据您的工作负载的复杂性，重构 SQL Server 数据库可能是一项复杂、耗时且占用大量资源的工作。

为了降低复杂性，与其在单一步骤中迁移您的数据库，您可以考虑分阶段方法。在第一阶段，您可以专注于核心数据库功能。在下一阶段，您可以将其他 AWS 服务集成入您的云环境中，以降低成本并优化性能、生产力和合规性。例如，如果您的目标是将本地 SQL Server 数据库替换为 Aurora MySQL 兼容版，则可以考虑在 Amazon EC2 上重新托管您的数据库，或者在第一阶段将您的数据库在 Amazon RDS for SQL Server 上更换平台，然后在后续阶段重构成 Aurora MySQL 兼容版。这种方法有助于降低迁移阶段期间的成本、资源和风险，并侧重在第二阶段进行优化和现代化。

## 在线和离线迁移
<a name="online-offline"></a>

根据迁移时间表和您允许的停机时间，您可以使用两种方法将您的 SQL Server 数据库从本地或其他云环境迁移到 AWS 云：离线迁移或在线迁移。
+ **离线迁移：**当您的应用程序可以承受计划内停机时间时，使用此方法。在离线迁移中，源数据库在迁移期间处于离线状态。当源数据库离线时，将其迁移到 AWS 上的目标数据库。迁移完成后，执行校验检查和验证检查，以确保与源数据库的数据一致性。当数据库通过所有验证检查后，可以通过将应用程序连接到 AWS 上的目标数据库来执行向 AWS 割接。
+ **在线迁移：**当您的应用程序要求几乎为零或最小的停机时间时，使用此方法。在线迁移中，源数据库分多个步骤迁移到 AWS。在初始步骤中，源数据库中的数据将在源数据库仍在运行时复制到目标数据库。在后续步骤中，来自源数据库的所有变更都传播到目标数据库。当源数据库和目标数据库处于同步时，它们已准备好进行割接。在割接期间，应用程序将其连接切换到 AWS 上的目标数据库，而不留下与源数据库的连接。您可以使用 AWS Database Migration Service (AWS DMS) 或从 [AWS Marketplace](https://aws.amazon.com/marketplace/) 可获得的工具（例如 Attunity）使源数据库和目标数据库同步。