如何在 RDS for SQL Server 中升级或降级 SQL Server 引擎版本?

3 分钟阅读
0

我想升级或降级适用于 SQL Server 的关系数据库服务(Amazon RDS)中的 SQL Server 引擎版本。我该如何操作?

简短描述

Amazon RDS for SQL Server 支持 Express、Web、Standard 和 Enterprise 版。您不能使用 RDS 控制台或 AWS 命令行界面(AWS CLI)将 SQL Server 版本更改作为就地修改执行。

要升级 SQL Server 版本,请创建快照,然后使用更高的引擎版本进行恢复。要降级,请使用以下方法之一:

  • 在 RDS for SQL Server 中使用本机备份和还原选项。
  • 使用 AWS Database Migration Service(AWS DMS)。
  • 使用其他工具导入和导出 SQL Server 数据。

解决方法

升级 SQL Server 引擎版本

要升级 SQL Server 引擎版本,请创建 RDS 快照,然后从该快照中恢复。有关升级限制,请参阅 Microsoft SQL Server 注意事项

要使用快照升级,请执行以下步骤:

1.    创建原始 RDS for SQL Server 实例的快照。

2.    还原步骤 1 中拍摄的快照,以创建新的 RDS 实例。在还原期间将所需版本更改为更高版本。

3.    重命名或删除原始 RDS for SQL Server 实例,以释放 DNS 端点名称以供重复使用。有关更多信息,请参阅重命名 RDS 实例部分。

有关从 Standard 版本升级到 Enterprise 版本的详细说明和步骤,请参阅将 Amazon RDS for SQL Server 实例从 Standard 版本修改为 Enterprise 版本

您可以使用相同的快照和还原方法进行这些升级:

  • Standard 版本到 Enterprise 版本
  • Web 版本到 Standard 版本或 Enterprise 版本
  • Express 版本到 Web 版本、Standard 版本或 Enterprise 版本

**重要说明:**升级版本时进行恢复快照会创建一个新的 RDS for SQL Server 实例。新实例的 RDS 端点与快照源实例不同。

降级 SQL Server 版本

由于 SQL Server 作为产品存在限制,因此不支持将 RDS for SQL Server 实例从较高版本就地降级到较低版本。但是,您可以按照后面提到的解决方法选项使用以下任意一种组合降级 RDS for SQL Server 版本:

  • Enterprise 版本到 Standard、Web 或 Express 版本
  • Standard 版本到 Web 或 Express 版本
  • Web 版本到 Express 版本

要降级 RDS for SQL Server 版本,请使用以下选项之一:

选项 1:在 RDS for SQL Server 中使用本机备份和还原选项

**注意:**您也可以使用此选项将数据库从较低版本的 RDS 实例移动到更高版本的 RDS 实例。

本机备份和还原在现有的源 RDS for SQL Server 实例上创建数据库的完整备份。将备份存储在 Amazon Simple Storage Service(Amazon S3)上,然后将备份文件还原到新的目标 RDS 实例上。

要从源 Enterprise 实例降级为目标 Standard 实例,请执行以下步骤:

1.    使用 Standard 版本的 SQL Server 创建新的 RDS for SQL Server。这是新的目标实例。

2.    在源 Enterprise 和目标 Standard 版本实例上添加本机备份和还原选项

3.    将源(Enterprise)实例上的每个用户数据库备份到 S3 存储桶中。

4.    在源实例上的每个数据库上运行 sys.dm_dm_persisted_sku-features (Transact-SQL) 查询。此查询检查当前是否正在使用任何绑定到更高版本的功能。将数据库还原到较低版本的目标实例上时,绑定到更高版本的功能可能不起作用。

USE [database-name]
    GO
    SELECT feature_name FROM sys.dm_db_persisted_sku_features;
    GO

5.    将备份从 S3 存储桶还原到目标(Standard)RDS 实例。

6.    确保在目标 RDS 实例数据库上创建所需的登录名和用户。还可以创建相应的安全组并附加相应的参数选项组。它们与源 RDS 实例相同。

**注意:**您可以使用上述步骤在 RDS 上的任何版本的 SQL Server 中导出和导入数据库。

选项 2:使用 AWS DMS

**注意:**您也可以使用此选项将数据库从较低版本的 RDS 实例移动到更高版本的 RDS 实例。

使用 AWS DMS 迁移您的数据库。AWS DMS 还将正在进行的更改从更高版本的实例(源端点)复制到更低版本的实例(目标端点)。

AWS DMS 允许单向复制、批量加载表和捕获数据更改(如果源和目标 RDS for SQL Server 实例版本支持)。

有关更多信息,请参阅以下主题:

选项 3:使用其他工具导入和导出 SQL Server 数据

您可以使用以下其他工具导入和导出数据库:

  • SQL Server 导入和导出向导
  • 生成和发布脚本向导
  • 批量复制(bcp 实用工具)

在使用这些工具之前,必须创建并激活 SQL Server 版本较低的实例。

请记住,这些工具比本机备份和还原或 AWS DMS 更费力。您可能会遇到多个必须修复的数据一致性或完整性错误。使用这些工具移动数据时会出现这些错误。在决定使用这些工具之前,请先在测试环境中全面测试流程。

  • **SQL Server 导入和导出向导:**将源实例的数据库和对象的 schema 复制并创建到目标实例。然后,使用此向导将一个或多个表、视图或查询从一个 RDS for SQL Server 数据库实例复制到另一个数据存储。有关详细信息,请参见 SQL Server 导入和导出向导
  • **SQL Server 生成和发布脚本向导和 bcp 实用工具:**使用 SQL Server 生成和发布脚本向导为整个数据库或选定对象创建脚本。您可以在目标 SQL Server 数据库实例上运行这些脚本来重新创建脚本对象。然后,使用 bcp 实用工具将选定对象的数据批量导出到目标数据库实例。从同时连接到源和目标 RDS 实例的 Amazon Elastic Compute Cloud(Amazon EC2)实例运行 bcp 实用工具。有关更多信息,请参见 SQL Server 生成和发布脚本向导和 bcp 实用工具

**注意:**本节中提到的所有选项也可用于将数据库从较低版本迁移到更高版本 RDS for SQL Server 实例。但是,升级 SQL Server 版本部分中介绍的方法更简单。决定使用哪个选项取决于停机时间、工作量、所涉及的复杂性等因素。

重命名 RDS 实例

所描述的用于升级或降级 RDS for SQL Server 版本的选项始终会导致创建新的目标 RDS 实例。新的 RDS 实例具有与现有源 RDS 实例不同的 RDS DNS 端点。

有时,跨应用程序和其他服务更新新的 RDS 端点会错过其中一个或多个组件中的连接字符串更新。发生这种情况时,您可能会在 RDS for SQL Server 实例的版本更改后遇到问题。

为避免这种情况,请考虑重命名源和目标 RDS 实例。重命名可确保目标版本实例具有与原始的源版本实例相同的 RDS DNS 端点。

这样做可以避免在 RDS for SQL Server 实例的版本更改后更改依赖性应用程序或服务的连接字符串。

要在更改版本后重命名源和目标 RDS 实例,请执行以下步骤:

此示例假设源 RDS 实例是具有 Enterprise 版本的 rds-original 实例。目标实例是具有 Standard 版本的 rds-new 实例。

1.    停止源实例 rds-original 的所有传入流量(停止应用程序)。

2.    按照上述任何步骤或选项升级或降级 RDS 实例上的 SQL Server 版本。版本成功更改后,有两个实例:源实例为 rds-original,目标实例为 rds-new

3.    修改源实例,以将数据库标识符rds-original 重命名为其他名称,例如 rds-original-old

4.    当实例 rds-original-old 处于 Available(可用)状态后,将目标实例数据库标识符从 rds-new 重命名为原始实例的名称rds-original

5.    验证实例是否已重命名为 rds-original-oldrds-original,并且处于 Available(可用)状态。

6.    确保将附加到新版本目标 RDS 实例的相关 RDS 安全组与源实例保持相同。这样可以确保来自现有应用程序的网络连接保持不变。

7.    现在允许传入流量(启动应用程序)到具有所需的 SQL Server 版本的 rds-original 实例。无需更改应用程序连接字符串,因为 RDS 具有与源实例相同的 DNS 端点。

8.    执行应用程序测试,以确保 RDS 实例版本更改后没有影响。

9.    如果一切正常,请创建实例 rds-original-old 的最终快照,然后删除此实例以节省成本。

**注意:**最佳做法是先在较低的环境中测试活动,然后再在生产环境中实施。这样便可以估算出更改需要多长时间。此外,您可以识别活动期间发生的任何问题,以帮助更顺利地在生产环境中实施。


相关信息

AWS Prescriptive Guidance – 评估将 AWS 上的 Microsoft SQL Server 从 Enterprise 版本降级到 Standard 版本的过程

AWS 官方
AWS 官方已更新 2 年前