升级数据库版本

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

RDS SQL Server各个版本提供的能力有所不同,为获得更优的性能和更强的扩展能力,您可按需将实例升级到更高的版本和系列。例如将实例大版本从SQL Server 2019 标准版升级至2022 标准版,将实例系列从基础系列升级至高可用系列。

背景信息

基础系列实例没有备节点作为热备份,因此当实例意外宕机或者执行变更配置、版本升级等任务时,会出现较长时间的不可用。

高可用系列实例有一个备实例,主备实例的数据会同步,当主实例出现故障无法访问时,会自动切换到备用实例。而且高可用系列实例提供完整的产品功能,包括弹性伸缩、备份恢复、性能优化、读写分离等。

集群系列实例基于SQL Server源生AlwaysOn技术,实现计算与存储分离,并且支持创建一个或多个只读实例实现读写分离,通过只读实例可解决大量的数据库读取需求。

说明

不同版本的功能差异,请参见各版本的功能差异

注意事项

  • 大版本、系列及规格升级后无法回退。升级规则如下:

    升级规则

    升级项

    升级规则

    升级数据库大版本

    • 标准版 → 企业版

    • 标准版 → 企业集群版

    • Web版 → 标准版

    • Web版 → 企业版

    • Web版 → 企业集群版

    说明

    Web版需要先升级到标准版,再从标准版升级到企业版或企业集群版。

    升级数据库系列

    • 基础系列 → 高可用系列

    • 基础系列 → 集群系列

    • 高可用系列 → 集群系列

    升级数据库规格

    • 共享规格 → 通用规格

    • 共享规格 → 独享规格

    • 通用规格 → 独享规格

    说明
    • 高可用共享规格不能直接升级为集群系列独享规格。

    • 仅支持向同规格或高规格进行升级,高规格升级规则参照上述说明。

    • 不支持共享规格直接升级共享规格。

    警告

    由于升级后无法回退,建议您升级前先创建按量付费或Serverless的目标实例测试兼容性。详见快速创建并使用RDS SQL Server实例

  • 对于已经开启数据归档功能的基础系列通用云盘实例,暂不支持将其升级到其他不同系列的实例。更多详情,请参见数据归档OSS

  • 在数据库版本升级期间,请勿对数据库执行任何元数据修改操作,执行这些操作可能会导致升级后的数据不一致。元数据修改操作包括但不限于添加数据库、删除数据库、修改数据库的恢复模式等。

限制条件

符合以下情况的实例暂不支持升级数据库版本:

升级影响

  • 升级操作一旦开始,不能取消,且升级完成后无法回退。

  • 升级前后实例名称、访问端口、标签、数据库账号等原有设置均不发生变化。

  • 升级所需时间取决于实例的数据量等,详情请参见本文常见问题

  • 实例升级过程中涉及网络切换等,通常会有20分钟内的不可服务时间。详情请参见本文常见问题,请确保应用程序具备自动重连机制。

  • 升级会造成虚拟IP(VIP)的变更,请尽量在您的应用程序中使用连接地址进行连接,不要使用IP地址。

  • 请及时清理客户端DNS缓存。客户端采用JVM的应用,建议将JVM配置中的TTL设置为不超过60秒,可确保在连接地址的VIP地址发生变更时,应用程序可以通过重新查询DNS来接收和使用资源的新VIP地址。

    说明

    下列JVM中设置TTL的方法可供参考:

    • 为所有使用JVM的应用程序设置TTL:将$JAVA_HOME/jre/lib/security/java.security文件中的networkaddress.cache.ttl参数值设置为60。

    • 仅为本地应用程序设置TTL:在首次调用InetAddress.getByName()前,即建立任何网络连接之前,在应用程序的初始化代码中设置networkaddress.cache.ttl java.security.Security.setProperty("networkaddress.cache.ttl" , "60");

  • 如果有正在执行的DTS任务,升级后,需要重新配置并启动相应的DTS任务。

费用说明

升级版本的费用,请参见变更配置

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 基本信息页面的配置信息区域,单击升级版本,在弹出的对话框中单击确认

    说明

    如果未找到该入口,请确认实例是否符合升级的要求。更多详情,请参见限制条件

    image.png

  3. 升级引擎版本页面修改配置,重点配置项说明如下,其他配置项说明请参见操作步骤

    说明

    部分实例升级时,在版本和系列选择上可能存在限制。具体详情,请参见本文注意事项和限制条件。

    参数名称

    说明

    升级到版本

    选择不同的目标版本,对应的产品系列实例规格选项也会变化,具体请参见升级规则

    产品系列

    选择目标系列。

    • 基础系列:单节点,计算与存储分离。

    • 高可用系列:一主一备的经典高可用架构,各方面表现均衡。

    • 集群系列:一主多备的高可用架构,备实例可访问。

    说明

    关于RDS实例的系列详情,请参见产品系列概述

    实例规格

    每种规格都有对应的CPU核数、内存、最大连接数和最大IOPS。详情请参见主实例规格列表

    切换时间

    • 数据迁移结束后立即切换:立刻进行迁移并切换。

    • 可维护时间内进行切换:立刻进行迁移并在可维护时间段内进行切换。

  4. 勾选服务条款,单击去支付

  5. 在弹出的对话框中,单击确认

    此时原实例运行状态变更为升降配中 > 跨网络升级中,当实例的运行状态变更为运行中即代表升级完成。具体时间取决于数据量,请耐心等待。

常见问题

大版本升级期间,是否能变更实例?例如变更实例规格?

大版本升级期间不支持变更实例,必须在大版本升级完成后,才可以进行其他操作。

大版本是否支持自动升级?

暂不支持自动升级数据库大版本。

大版本升级的时间预估需要多久?

预估时间

通常情况下,升级实例大版本所需的预估时间范围如下。需注意,以下备份和恢复速度均基于未压缩的数据大小。

说明

由于Web版本的实例不支持备份压缩,因此备份效率会有所影响,备份与恢复速度可能降至100 GB/小时以下。

操作

是否必须

预计消耗时间

注意事项

创建与配置新实例

必须

10~15分钟

所需时间根据升级时所选择的产品系列和规格而定。

对实例进行全量备份

非必须

200 GB/小时

  • 基于全量备份策略,若36小时内实例未进行过全量备份,大版本升级过程中实例将进行一次全量备份,以平衡事务日志与全量备份的时间。

    建议在升级大版本前选择适宜时间手动执行全量备份,或选择在系统自动全量备份结束后的36小时内发起大版本升级任务,以减少升级过程所需总时长。

  • 备份速度可能因地区和时间段的不同而有所变化。

  • 为了获得更准确的备份和恢复性能,请参考最近一次全量备份的数据量和备份时间。

在目标实例恢复全量备份

必须

200 GB/小时

在源实例进行增量事务日志备份

必须

200 GB/小时

进行增量日志备份前后,可能存在2分钟的额外损耗(例如备份准备、收尾、资源分配等)。

在目标实例应用增量事务日志备份

必须

200 GB/小时

应用增量日志备份前后,可能存在2分钟的额外损耗(例如备份一致性验证等)。

将数据库恢复上线

必须

正常2分钟内

  • 资源消耗:应用增量事务日志是资源密集型操作。小规格实例(例如2核4 GB)可能会因事务日志数量较多而导致恢复速度下降。

  • 数据库恢复加速选项:RDS SQL Server 2019及更高版本提供加速数据库恢复(Accelerated Database Recovery)选项,可能会减少数据库恢复上线步骤所需时间。具体请根据微软官方文档综合评估是否启用此选项。

网络切换等待、网络连接迁移

必须

10分钟

预估示例

测试实例:实例规格为4核8 GB,数据量大小为600 GB。

  • 创建与配置新实例:预计耗时12分钟。

  • 全量备份(非必须):预计耗时3小时。(600 GB / 200 GB每小时)

  • 恢复全量备份至目标实例:预计耗时3小时。(600 GB / 200 GB每小时)

  • 在源实例进行增量事务日志备份:预计耗时5分钟。(10 GB / 200 GB每小时)+ 2分钟额外损耗 = 5分钟

  • 在目标实例应用增量事务日志备份:预计耗时5分钟。(10 GB / 200 GB每小时)+ 2分钟额外损耗 = 5分钟

  • 将数据库恢复上线:预计耗时2分钟内。

  • 网络切换与迁移:预计耗时10分钟。

综上,在此示例中,若实例36小时内未进行过全量备份,总耗时预计为6小时34分钟左右,否则需要3小时34分钟左右。

升级建议

  • 维护窗口规划:建议在系统负载较低的时段进行升级操作,以最小化对业务的影响。

  • 长事务问题:升级过程中应避免执行长时间运行的事务操作,例如创建或重建索引、数据归档等,以免延长数据库恢复上线步骤的时间。

在跨时区场景下,如何正确设置实例升级时的切换时间?

  • 场景示例:用户本人位于迪拜地域,用户RDS SQL Server实例设置的时区为印度时间(实例所在地域为新加坡)。在这种复杂的跨时区情况下,如何设置实例升级时的切换时间,以避免业务中断。

  • 示例目标:用户计划在印度时间的2024年5月11日02:00进行RDS实例的升级切换。

  • 解决方法:将RDS SQL Server实例印度时区时间,转换为迪拜地域的浏览器时间即可(此场景下无需考虑RDS实例所在地域)。即在本示例中,若用户计划在RDS实例的印度时间2024年5月11日02:00进行升级切换,那么用户应在自己所在的迪拜时间(浏览器显示时间),即2024年5月11日00:30,登录到RDS控制台设置实例升级切换时间。

  • 具体转化方法:

    1. 将印度时间(2024年5月11日02:00)转换为UTC时间:印度时间比UTC时间早5小时30分钟,因此转换后UTC时间为2024年5月10日20:30。

    2. 将UTC时间(2024年5月10日20:30)转换为迪拜时间:UTC时间比迪拜时间晚4小时,因此转换后迪拜时间为2024年5月11日00:30。

相关API

您也可以通过API升级数据库大版本,请参见ModifyDBInstanceSpec - 变更RDS实例