

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

# 迁移到 Amazon RDS for SQL Server 的最佳实践
<a name="best-practices"></a>

根据对您数据库和项目要求的评测，如果您的目标是迁移到 Amazon RDS for SQL Server，请按照本节中的最佳实践预置目标数据库、执行迁移以及测试、操作和优化您的 Amazon RDS for SQL Server 数据库。

**重要**  
在迁移数据库之前，请务必制定回滚计划。

**注意**  
您可以使用 Migration Hub Orchestrator 通过使用本机备份和恢复来自动执行和编排 SQL Server 数据库向 Amazon EC2 或 Amazon RDS 的迁移。有关更多信息，请参阅 [AWS Migration Hub Orchestrator 一节](mho.md)。

## 配置您的目标数据库
<a name="provision"></a>

在完成评测、规划和准备数据库迁移策略后，在配置 Amazon RDS for SQL Server 数据库时，请遵循以下最佳实践：
+ 根据您对 CPU、内存、IOPS 和存储类型的要求调整 Amazon RDS for SQL Server 数据库实例的大小。（如果您使用的是 SQL Server 标准版，请在标准版的限制范围内配置 CPU 和内存。）
+ 设置正确的时区和排序规则。
+ 确保在正确的虚拟私有云 (VPC) 中启动 Amazon RDS。
+ 使用正确的端口和 IP 地址创建安全组。
+ 在私有子网中配置 Amazon RDS 数据库以提高安全性。
+ 如果可能，请使用最新版本的 SQL Server 配置 SQL Server 实例。
+ 为每个 Amazon RDS 数据库创建单独的选项组和参数组。
+ 收集和提取用于迁移的登录名、用户和角色。
+ 查看 SQL Server Agent 作业，了解需要迁移的维护和应用程序。

## 从源数据库进行备份
<a name="backup"></a>

有许多工具可以将 SQL Server 数据库迁移到 Amazon RDS for SQL Server 数据库。如果您的要求允许停机，最常用的方法是使用 SQL Server 本机备份和还原。

如果停机时间有限，则可以使用本机 SQL Server 备份/恢复以及差异备份和日志备份。或者您可以使用 AWS DMS，它提供三个选项：满载、满载和 CDC，或者仅限 CDC。

## 将数据泵转储文件传输到 AWS
<a name="transfer-data"></a>
+ 如果您使用的是可在本地环境和 AWS 之间提供高带宽连接 Direct Connect，则可以将 SQL Server 备份复制到 Amazon S3 并设置 [Amazon S3 集成](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/User.SQLServer.Options.S3-integration.html)。
+ 如果您经过 Direct Connect 的带宽不高，请使用 AWS Snowball Edge 传输大型数据库备份文件。当需要复制时，也可以使用 AWS DMS 来传输数据。

## 将数据恢复到目标数据库
<a name="restore-data"></a>
+ 如果您要迁移非常大的数据库，我们建议您在迁移期间先配置一个更大的 [Amazon RDS 实例类型](https://aws.amazon.com/rds/instance-types/)，以加快数据加载速度。
+ 禁用多可用区。（迁移后可以重新启用。）
+ 禁用备份保留。（迁移后可以重新启用。）
+ 使用本机 SQL Server **还原**命令恢复数据库。
+ 创建登录名和用户，并根据需要修复孤立用户。
+ 根据需要创建 SQL Server Agent 作业并查看时间表。

## 迁移后步骤
<a name="post-migration"></a>

完成迁移后，您可以：
+ 将数据库实例更改为大小合适的实例类型。
+ 启用多可用区和备份保留。
+ 确保所有任务均在辅助节点上创建（用于多可用区配置）。
+ 向 Amazon CloudWatch Logs 发布 SQL Server 错误和代理日志，并使用 CloudWatch 查看指标和创建警报。有关更多信息，请参阅 [Amazon RDS 文档](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.SQLServer.html)。
+ 启用[增强监测功能](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html)实时获取数据库实例的指标。
+ 为提醒设立 Amazon Simple Notiﬁcation Service (Amazon SNS) 主题。

## 测试迁移
<a name="test-migration"></a>

我们建议您进行以下测试，以便根据新的 Amazon RDS for SQL Server 数据库验证您的应用程序：
+ 执行功能测试。
+ 比较源数据库和目标数据库中 SQL 查询的性能，并根据需要调整查询。有些查询在目标数据库中的执行速度可能会更慢，因此我们建议您在源数据库中捕获 SQL 查询的基准。

为了在概念验证 (POC) 阶段进行其他验证，我们建议进行以下补充测试：
+ 运行性能测试以确保它们符合您的业务期望。
+ 测试数据库失效转移、恢复和修复，确保满足 RPO 和 RTO 要求。
+ 列出所有关键任务和报告，并在 Amazon RDS 上运行它们，以根据您的服务水平协议 (SLA) 评估其性能。

## 操作和优化您的 Amazon RDS 数据库
<a name="operate-optimize"></a>

当您的数据库在 AWS 上时，请确保遵循云中监控、警报、备份和高可用性等领域的最佳实践。例如：
+ 设置 CloudWatch 监控并启用详细监控。
+ 使用 [Amazon RDS 性能详情](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)和其他第三方监控解决方案，例如 [SentryOne](https://www.sentryone.com/) 或 [SQL Server 版 Foglight](https://www.quest.com/products/foglight-for-sql-server/) 来监控您的数据库。
+ 使用 SNS 主题设置提醒。
+ 使用 [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) 或本地 SQL Server 备份设置自动备份，然后复制到 Amazon S3。
+ 为了实现高可用性，请设置 Amazon RDS Multi-AZ 特征。
+ 如果您需要只读数据库，请根据需要在相同或跨 AWS 区域内[设置只读副本](rds-sql.md#rds-sql-replicas)。