tencent cloud

文档反馈

升级数据库大版本

最后更新时间:2024-03-20 14:25:11

    场景及优势

    PostgreSQL 不断在提供新版本给客户使用,新版本会引入更多的特性、更好的性能和更高的稳定性和安全性,因此建议您基于业务需要来合理规划,尽早升级数据库大版本。云数据库 PostgreSQL 支持数据库大版本升级,该工具有如下优势:
    支持 PostgreSQL 9~15之间的跨版本升级。支持升级前演练。
    在原实例上拉取只读实例进行升级操作,原实例不受任何影响。
    升级流程对业务几乎只有秒级闪断和短暂只读影响。
    只读时间取决于原实例对象数量,与数据规模无关。
    原实例升级完成后,连接地址、标签、监控、备份集等信息完整保留。
    说明:
    暂不支持对开启数据透明加密实例进行大版本升级。

    操作步骤

    正式大版本升级

    1. 登录 PostgreSQL 控制台,在实例列表,单击实例 ID操作列的管理,进入实例详情页面。
    2. 单击版本升级,进入版本升级操作页面。
    
    3. 单击升级大版本,进入版本升级页面。
    3.1 目标版本
    当前系统会返回可以升级的所有版本供用户选择,每个大版本会返回一个最新的版本号。
    3.2 升级时间
    升级过程中会有闪断和短暂的只读,因此业务需要评估可操作时间窗口,可选择立即执行、指定时间或者维护时间内。维护时间设置请参考 设置实例维护时间
    当升级完成还不到指定时间或者维护时间窗口时,实例的状态为等待切换,您可以在控制台实例列表 > 操作 > 立即切换来完成升级流程。
    3.3 统计信息搜集说明
    准确的统计信息可确保 PostgreSQL 查询规划器以最优方式处理查询。缺少统计信息可能会导致查询计划错误,进而可能会降低性能并占用过多内存。该操作,主要是对主实例运行 ANALYZE 并在升级后更新系统统计信息。统计信息生成时长取决于实例数据量大小。
    3.4 插件升级设置
    该操作主要是在升级完成后在创建过插件的数据库上执行"ALTER EXTENSION UPDATE"。有三个选项:
    升级完成前之前升级插件: 由于需要检查所有的数据库的插件列表并升级到对应的版本,执行时间跟数据库的数量和插件数量正相关,会延长整个大版本升级的执行时间,请您评估后选择。
    升级完成后升级插件:升级完成后,立即恢复读写。用户需要评估插件升级完成前对业务是否有影响。
    不升级插件版本:升级完成后,立即恢复读写。用户自己对插件进行升级,需要评估插件升级完成前对业务是否有影响。
    3.5 升级开始前是否备份
    执行大版本升级时,为保证数据可恢复性,系统默认会自动进行两次备份,备份类型为升级备份
    升级开始前会进行一次全量备份,在开始升级之前立即进行。用户可以使用此备份将数据库实例恢复为先前版本的状态。
    升级完成后进行一次全量备份,该备份在允许对升级后的数据库实例执行新写入后立即创建。
    升级前备份支持选项:
    否:当实例已有备份可以恢复到升级前的状态时,可选择此选项,否则不建议选择。
    是:默认选项。备份商业化后可能会产生费用,具体请参考 备份空间收费说明,用户可以在升级验证完成后选择将其删除。此备份文件的删除策略也受用户设置的备份集保留规则管理。如果您想延长备份集保留时间,请参考下图:
    
    3.6 任务启动设置
    只检查不发起任务:只进行升级前的检查,包含实例运行状态、实例参数设置合法性、数据库连接检查等,但不发起任务。用户可以通过该操作来预检查升级可行性。
    检查并发起任务:进行升级前的检查,包含实例运行状态、实例参数设置合法性、数据库连接检查等。如果检查通过则直接发起任务。
    
    4. 单击提交会产生一个升级任务,实例的状态为内核版本升级中,用户可以在任务列表来查看任务状态和系统日志。
    
    

    演练升级

    为了保证升级的成功率,业务可以选择先演练升级。演练升级是基于当前实例的备份集先克隆出新实例,在新实例上进行升级,升级完成后产生新实例,用户可以选择直接使用该实例,也可以删除实例。克隆产生实例会正常计费,计费模式为按量计费,具体价格请参考 产品价格。具体操作如下:
    1. 登录 PostgreSQL 控制台,在实例列表,单击实例 ID操作列的管理,进入实例详情页面。
    2. 点击版本升级,进入版本升级操作页面。
    3. 点击大版本升级演练,进入演练操作界面
    3.1 克隆实例配置
    具体克隆实例配置请参考 克隆实例
    
    3.2 升级配置
    升级配置项请参考 正式大版本升级
    单击提交,发起演练任务,如果原实例为 postgres-3e3ug2nj ,则系统会生产一个实例名为 postgres-3e3ug2nj-pre-upgrade-20230809154431 的新实例,并完成后续的升级。

    原理解析

    为了方便您了解系统原理,合理规划大版本升级时间段,本文为您展示了在大版本升级过程中,后台系统所做的操作,具体如下图所示:
    
    上图以 PostgreSQL 10升级到 PostgreSQL 14为例,详细说明了后台系统操作步骤如下:
    1. 预检查
    检查实例状态是否为运行中;
    检查实例参数合法性;
    检查升级目标版本是否合法。
    2. 新建只读实例
    新建源实例的只读实例,为减少升级操作对原实例的影响,后续升级操作会在该只读实例上进行。
    3. 初始化新版本数据库
    新建空白目录,初始化一个版本为目标版本的新实例,该新实例只有单节点。
    4. 停止高版本节点、原实例主节点只读。
    停止该新版本的实例,同时将源实例设为只读。
    5. 只读实例提升为主实例、停止进程。
    将只读实例提升为主实例,并停止该实例。
    6. 执行升级
    执行升级,导出并导入元数据,处理数据。
    7. 启动新版本进程、切换路由、新建备机并回收历史节点。
    启动升级完成的新版本实例,切换原实例路由信息,并给新实例搭建从节点。最后清理环境,任务结束。
    注意:
    系统升级完成后,请业务务必做好相关验证,以保证业务顺利运行,具体如下:
    请在升级之后的数据库上进行业务负载测试。
    验证插件兼容性。
    验证参数兼容性。

    系统限制

    如果实例有关联只读实例,则需要先删除只读实例再发起升级。
    如果实例存在磁盘空间超用则不能发起大版本升级。

    热点问题

    是否支持大版本降级?

    不支持大版本降级,当前云数据库 PostgreSQL 大版本向前兼容,建议优先使用高版本。
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持