本文介绍如何升级RDS PostgreSQL数据库大版本,例如从PostgreSQL 10升级至11。

PostgreSQL社区每年发布一个大版本,社区对每个大版本支持5年,大版本通常带来功能、性能方面的革命性提升,而超过5年的数据库版本,由于社区不再提供支持,性能和安全的风险也将逐渐增加。

为了让您享受PostgreSQL新的大版本带来的功能、性能提升,同时降低升级风险,RDS PostgreSQL提供大版本升级功能,步骤如下:

  1. 创建升级检查报告

    检查当前主实例是否支持大版本升级,并提供检查结果和检查报告,检查报告异常时不允许升级。

  2. 执行升级

    指定PostgreSQL大版本进行升级,可以选择不割接创建一个新版本的测试实例进行业务测试及确保兼容性,测试结束后在原实例上选择割接再次执行大版本升级。

注意事项

  • 升级大版本前需要满足以下前提条件:
    • 版本:PostgreSQL 12、11、10
    • 系列:高可用版
    • 存储类型:云盘
    • 网络类型:专有网络。如果网络类型为经典网络,请先切换为专有网络。关于如何查看或切换网络类型,请参见切换网络类型
    • 实例不是只读实例专属集群实例
    • 实例ID不是以pg-cn开头。
  • 升级大版本将会造成以下影响:
    • 升级过程中,原实例会被变更为只读,并会造成分钟级业务闪断,请在业务低峰期进行升级。
      说明 具体的闪断时长取决于数据量以及DNS缓存刷新时间。

      您可以尝试切换虚拟交换机,通过业务闪断时长来评估客户端的DNS缓存刷新时间。

    • 如果原实例使用了新版本不支持的参数,在新版本中该参数会被自动删除。
    • 新实例不继承原实例的实例名称标签云监控报警规则以及备份数据
    • 如果待升级的实例作为数据传输服务(DTS)的源实例或目标实例,则升级后需要重建DTS任务。创建DTS任务详见DTS产品文档
  • 当待升级的实例中创建了只读实例时,则无法直接进行升级,需要在升级前后进行以下操作:
    1. 将应用程序中配置的只读实例连接地址修改为主实例连接地址。
      说明 为保证业务稳定,建议在业务低峰期修改应用连接地址。
    2. 删除只读实例。
    3. 升级大版本
    4. 升级完成后,在新实例上重新创建PostgreSQL只读实例
    5. 在应用程序中,将升级前修改的实例连接地址修改为新的只读实例连接地址。

功能特点

  • 支持跨版本升级:例如直接从PostgreSQL 10.0升级到PostgreSQL 13.0。
  • 支持升级演练:通过不割接的方式,可以在不影响原实例的情况下,验证整个升级流程。
  • 支持平滑升级
    • 无需修改应用:通过割接方式升级,新实例地址与原地址相同,无需修改应用。
    • 无需停机:升级时原实例无需停机,而是暂时变为只读状态,降低业务中断带来的风险。此外,由于是通过克隆实例进行升级,所以即使升级失败也不会影响原实例。
    • 保留实例设置
      • 升级后保留原实例的白名单、参数设置、插件(新版本不支持的插件和参数除外)。
      • 加密实例升级大版本后仍为加密实例,加密Key保持不变。

计费方式

升级后产生的新实例的计费方式统一为按量付费,您可以在确认业务平稳运行后把新实例转成包年包月以及释放原实例

操作视频

升级大版本

  1. 如果待升级的实例中创建了只读实例,需在升级前执行以下步骤:
    1. 将应用程序中配置的只读实例连接地址修改为主实例连接地址。
      说明 为保证业务稳定,建议在业务低峰期修改应用连接地址。
    2. 删除只读实例。
  2. 进入大版本升级页面。
    1. 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。
      选择地域
    2. 单击目标实例ID,在左侧导航栏单击大版本升级
      说明
      • 需满足注意事项
      • 当前仅新版控制台支持。
  3. 升级检查页签中,选择目标升级版本,然后单击创建升级检查报告,并等待数分钟。
    说明
    • 为确保升级能顺利完成,请在本步骤中升级检查全部通过后,再进行后续升级步骤。
    • 如果检查失败,且报告里的Checking for presence of required libraries状态是fatal,则需实例中执行SELECT * FROM pg_extension;查看当前使用的插件,并根据支持插件列表找出高版本不支持的插件,然后卸载该插件。
    • 升级检查成功后,如果对主实例执行了CREATE EXTENSION操作,需重新执行检查。
  4. 单击升级实例页签,阅读警告内容,然后选择升级版本,并单击继续创建升级实例
  5. 在弹出的窗口中确认注意事项,单击确定,并设置参数(以下仅列举重点参数):
    配置 说明
    存储类型 选择实例的存储类型。

    版本升级功能基于云盘快照,您只能选择和原实例同等类型存储类型。例如原实例的存储类型为SSD云盘,新实例也只能选择SSD云盘。

    割接配置 系统将创建一个新实例进行数据迁移。请选择迁移后是否自动切换至新实例。
    • 不割接:不自动切换。此选项一般用于正式升级之前测试当前业务在新版本中的兼容性。建议第一次执行时选择不割接,应用层完全测试验证通过后,释放实例并重复升级大版本操作,选择割接开始正式升级。
      说明
      • 迁移过程中,原实例的业务不会受到影响。
      • 如需通过不割接升级实例,需在迁移完成后把应用程序中的数据库连接地址改为新实例的连接地址。如何查看连接地址,请参见查看或修改内外网地址和端口
    • 割接:自动切换。您无需更改应用程序里的数据库连接地址,割接结束会自动连接到新实例。此选项一般用于在确认业务可以稳定运行在新版本之后执行正式升级。
      说明
      • 割接后无法回退,请谨慎选择。
      • 切换过程中,原实例会被变为只读,业务无法写入,请务必在业务低峰期进行。
      • 如果原实例中创建了只读实例,则无法选择割接。只能通过不割接升级实例,且原只读实例不会被克隆。升级完成后,您需要在新版本实例中另行创建PostgreSQL只读实例
    割接时间窗口 迁移完成后,业务切换至新实例的时间。
    • 立刻:迁移完成后立即切换。
    • 实例可运维时间:在可运维时间段内切换。
    说明 仅当割接配置割接时可选。
    统计信息收集模式 选择在哪个时间点对数据库执行统计信息收集。
    • 割接前收集:可以保证业务稳定性。如果实例数据量太大可能会导致升级时间较久。
    • 割接后收集:实例升级速度较快。升级后访问未生成统计信息的表可能导致执行计划不准确,业务高峰期还可能导致数据库宕机。
    说明 对于不割接场景,割接前收集表示新实例开放读写前收集,割接后收集表示新实例开放读写后收集。
    存储空间 选择新版本实例的存储空间大小。
    实例规格 选择新版本实例的规格。有关实例规格的更多详情,请参见主实例规格列表
  6. 单击立即创建
    此时原实例状态变更为版本升级中,并且实例列表中会多出一个状态为创建中的新实例。当两个实例的状态变更为运行中即代表创建或升级完成。具体时间取决于数据量,请耐心等待。
    说明 升级任务创建后不支持修改或删除,如需删除升级任务,请提工单联系售后服务。
  7. 如果在步骤一中删除了只读实例,则在升级后,还需执行以下步骤:
    1. 在新实例上重新创建PostgreSQL只读实例
    2. 在应用程序中,将步骤一中修改的实例连接地址修改为新的只读实例连接地址。

后续步骤

  1. 确认业务已稳定运行在新实例中后,将新实例转成包年包月
  2. 释放原实例
  3. 新实例不包含只读实例,您可以按需创建PostgreSQL只读实例