升级 Microsoft SQL Server 数据库引擎
如果 Amazon RDS 支持数据库引擎的新版本,您可以将您的数据库实例升级到新版本。SQL Server 数据库实例具有两种升级:主要版本升级和次要版本升级。
主要版本升级会包含不与现有应用程序向后兼容的数据库更改。因此,您必须手动为数据库实例执行主要版本升级。您可以通过修改数据库实例来启动主要版本升级。不过,在执行主要版本升级之前,我们建议您按照测试升级中所述的步骤测试升级。
相比之下,次要版本升级仅包括与现有应用程序向后兼容的更改。您可以通过修改数据库实例来手动启动次要版本升级。
在以下示例中,CLI 命令返回一个将 AutoUpgrade
显示为 true 的响应,指示升级是自动的。
... "ValidUpgradeTarget": [ { "Engine": "sqlserver-se", "EngineVersion": "14.00.3281.6.v1", "Description": "SQL Server 2017 14.00.3281.6.v1", "AutoUpgrade": true, "IsMajorVersionUpgrade": false } ...
有关执行升级的更多信息,请参阅升级 SQL Server 数据库实例。有关在 Amazon RDS 上可用的 SQL Server 版本的信息,请参阅 Amazon RDS for Microsoft SQL Server。
升级概述
在升级流程期间,Amazon RDS 会创建两个数据库快照。第一个数据库快照是数据库实例在进行任何升级更改前的。第二个数据库快照是在升级结束后制作的。
注意
如果您将数据库实例的备份保留期设置为大于 0 的数字,则 Amazon RDS 只需创建数据库快照。要更改您的备份保留期,请参阅 修改 Amazon RDS 数据库实例。
升级完成后,您无法恢复为之前版本的数据库引擎。如果您想恢复到以前的版本,请从升级前创建的数据库快照还原以创建新的数据库实例。
在 SQL Server 的次要或主要版本升级期间,Free Storage Space和 Disk Queue Depth 指标将显示 -1
。升级完毕后,这两个指标都将恢复正常。
主要版本升级
Amazon RDS 当前支持对 Microsoft SQL Server 数据库实例进行以下主要版本升级。
您可以将现有数据库实例从 SQL Server 2008 之外的任何版本升级到 SQL Server 2017 或 2019。要从 SQL Server 2008 升级,请先升级到其他版本之一。
当前版本 | 支持的升级版本 |
---|---|
SQL Server 2019 |
SQL Server 2022 |
SQL Server 2017 |
SQL Server 2022 SQL Server 2019 |
SQL Server 2016 |
SQL Server 2022 SQL Server 2019 SQL Server 2017 |
您可以使用 AWS CLI 查询(如以下示例)来查找特定数据库引擎版本的可用升级。
对于 Linux、macOS 或 Unix:
aws rds describe-db-engine-versions \ --engine sqlserver-se \ --engine-version 14.00.3281.6.v1 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" \ --output table
对于 Windows:
aws rds describe-db-engine-versions ^ --engine sqlserver-se ^ --engine-version 14.00.3281.6.v1 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^ --output table
输出显示您可以将版本 14.00.3281.6 升级到最新推出的 SQL Server 2017 或 2019 版本。
-------------------------- |DescribeDBEngineVersions| +------------------------+ | EngineVersion | +------------------------+ | 14.00.3294.2.v1 | | 14.00.3356.20.v1 | | 14.00.3381.3.v1 | | 14.00.3401.7.v1 | | 14.00.3421.10.v1 | | 14.00.3451.2.v1 | | 15.00.4043.16.v1 | | 15.00.4073.23.v1 | | 15.00.4153.1.v1 | | 15.00.4198.2.v1 | | 15.00.4236.7.v1 | +------------------------+
数据库兼容性级别
您可以使用 Microsoft SQL Server 数据库兼容性级别调整某些数据库行为,以模仿之前版本的 SQL Server。有关更多信息,请参阅 Microsoft 文档中的兼容性级别
您可以使用 ALTER DATABASE 命令更改数据库的兼容性级别。例如,要将名为 customeracct
的数据库更改为与 SQL Server 2016 兼容,请发出以下命令:
ALTER DATABASE customeracct SET COMPATIBILITY_LEVEL = 130
多可用区和内存优化注意事项
Amazon RDS 通过使用 SQL Server 数据库镜像 (DBM) 或 Always On 可用性组 (AG) 支持为运行 Microsoft SQL Server 的数据库实例进行多可用区部署。有关更多信息,请参阅“Amazon RDS for Microsoft SQL Server 多可用区部署”。
如果数据库实例在多可用区部署中,则同时升级主实例和备用实例。Amazon RDS 进行滚动升级。您只会在故障转移期间遇到停机。
SQL Server 2016 到 2019 企业版支持内存优化。
只读副本注意事项
在数据库版本升级期间,Amazon RDS 会升级所有只读副本以及主数据库实例。Amazon RDS 不支持单独对只读副本进行数据库版本升级。有关只读副本的更多信息,请参阅 在 Amazon RDS 中使用 Microsoft SQL Server 的只读副本。
当您执行主数据库实例的数据库版本升级时,该实例的所有只读副本也会自动升级。Amazon RDS 将在升级主数据库实例之前同时升级所有只读副本。在主数据库实例上的数据库版本升级完成之前,只读副本可能不可用。
选项组注意事项
如果数据库实例使用自定义数据库选项组,则在某些情况下,Amazon RDS 无法自动向数据库实例分配新的选项组。例如,在您升级到新的主要版本时,必须指定新的选项组。我们建议您创建新的选项组,然后向该组添加与现有自定义选项组相同的选项。
参数组注意事项
如果您的数据库实例使用自定义数据库参数组:
-
Amazon RDS 在升级后自动重新启动数据库实例。
-
在某些情况下,RDS 无法自动为您的数据库实例分配新参数组。
例如,在升级到新的主要版本时,必须指定新参数组。我们建议您创建新参数组,然后配置您现有的自定义参数组中的那些参数。
有关更多信息,请参阅 在 Amazon RDS 中创建数据库参数组 或 在 Amazon RDS 中复制数据库参数组。
测试升级
在数据库实例上执行主要版本升级前,应该彻底地测试数据库以及访问该数据库的所有应用程序,了解是否与新版本兼容。我们建议您使用以下过程。
测试主要版本升级
-
对于数据库引擎的新版本,查看 Microsoft 文档中的升级 SQL Server
,以了解是否存在可能会影响数据库或应用程序的兼容性问题。 -
如果数据库实例使用自定义选项组,则创建与您正升级到的新版本兼容的新选项组。有关更多信息,请参阅“选项组注意事项”。
-
如果数据库实例使用自定义参数组,则创建与您正升级到的新版本兼容的新参数组。有关更多信息,请参阅“参数组注意事项”。
-
为要升级的数据库实例创建数据库快照。有关更多信息,请参阅“为单可用区数据库实例创建数据库快照”。
-
恢复数据库快照,以便创建一个新的测试数据库实例。有关更多信息,请参阅“还原到数据库实例”。
-
使用下面介绍的一种方法来修改此新测试数据库实例,以将其升级到新版本:
-
计算升级的实例使用的存储容量以决定升级是否需要额外的存储容量。
-
对升级的数据库实例运行所需次数的质量保证测试以确保数据库和应用程序可正常使用新版本。实施任何必需的新测试,评估您在步骤 1 中发现的任何兼容性问题的影响。测试所有的存储过程和功能。将应用程序的测试版本指向所升级的数据库实例。
-
如果所有测试通过,那么请在生产数据库实例上执行升级。我们建议您直到确认一切正常后,再允许对数据库实例执行写入操作。
升级 SQL Server 数据库实例
有关手动或自动升级 SQL Server 数据库实例的信息,请参阅以下信息:
重要
如果您有任何使用 AWS KMS 进行加密的快照,建议您在支持结束之前启动升级。
在支持结束之前升级已弃用的数据库实例
主要版本被弃用之后,您不能在新数据库实例上安装它。RDS 将尝试自动升级所有现有数据库实例。
如果您需要恢复已弃用的数据库实例,可以执行时间点恢复 (PITR) 或还原快照。这样做可让您获得使用已弃用版本的数据库实例的临时访问权。但是,在主要版本完全弃用之后,这些数据库实例也将自动升级到支持的版本。