本文介绍如何以零停机的方式对RDS PostgreSQL数据库进行大版本升级。
升级流程
不同升级阶段对实例的影响
升级阶段 | 影响 |
开始大版本升级 | 禁止进行任何DDL操作。 |
创建复制槽和发布 |
|
订阅端启动并建立逻辑复制关系 |
|
开始切换 |
|
完成切换(升级完成) |
|
升级任务开始后,在升级历史页签,单击目标升级任务升级日志列的查看信息,即可查看详细的升级过程。
步骤一:升级前检查
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击大版本升级。
说明如果左侧导航栏中没有大版本升级,请检查RDS PostgreSQL实例版本及配置,具体请参见前提条件。
在升级检查页签中,单击创建升级检查报告。
择选升级版本,且升级模式选择零停机后,单击确定。
此时,实例状态变为维护实例中,待升级检查完成后,实例状态会变为运行中。
当升级检查报告结果为成功或警告时,可以进行后续的大版本升级步骤;若结果为失败,则需单击查看信息,根据报告内容修复异常检查项后,再次进行升级前检查。常见的报错及原因请参见解读RDS PostgreSQL大版本升级检查报告。
重要为确保升级顺利完成,当升级检查报告的检查结果为警告时,建议根据报告内容修复异常检查项后,再次进行升级前检查,直至检查结果为成功。
升级检查成功后,如果在主实例中创建了插件,需重新执行检查。
步骤二:升级大版本
单击升级实例页签,阅读警告内容,然后选择升级版本,并单击创建升级任务。
在弹出的窗口中,阅读提示内容,然后单击确定。
在创建大版本升级任务区域,选择升级模式为零停机。
单击立即创建。
当实例状态变为迁移中时,表示升级任务已正式启动。
升级所需时间与实例中的数据库对象数量密切相关,数据库对象数量越多,升级所需时间越长。在进行大版本升级时,您可以在任务中心查看升级进度。
重要升级任务创建后不支持修改或删除。
原实例状态为迁移中时,该实例不支持修改参数、重启、释放等运维操作。
监控实例负载
在升级过程中,您可以监控实例的负载情况和磁盘使用率,以了解实例的性能状态。
在WAL日志堆积期间,实例的磁盘使用率会暂时上升。建立逻辑复制后,磁盘占用将会降低。
在逻辑复制阶段,流量和数据库数量会对源实例的负载产生影响。可以通过观察各类资源下wal_sender的资源占用率来评估逻辑复制的影响。
步骤三:切换到高版本
验证高版本实例。
当实例状态将从迁移中转变为迁出数据中时,表示逻辑复制已搭建完成,创建升级任务的过程将结束,您可以验证高版本实例的数据。
进入升级历史页签,使用目标升级记录的高版本验证地址连接至高版本实例,以验证升级后的数据。
说明高版本实例为只读模式,无法进行写入操作。
切换到高版本实例。
确定高版本实例的数据符合预期后,且升级结果为同步中时,单击升级日志列的切换,将业务切换到高版本实例。
说明如果升级结果为其他状态,请参见升级结果说明进行处理。
如果您决定放弃本次升级,可以单击升级日志列的取消。这将删除逻辑复制槽,取消逻辑复制对源实例的影响,并允许其执行DDL操作。
在切换弹窗中设置容忍停写时间(单位:秒),并单击确定。
当升级结果变为只读时,表示正在进行切换,此时实例状态为迁移中时。在大版本升级的升级历史页签,单击升级日志列的中断按钮,取消此次切换操作。
说明可以通过在切换时设置容忍停写时间,主动等待复制延迟消除,保障数据一致性。在此过程中,升级结果将变为只读。如果超出此时间,则系统将返回到同步中状态,并解除只读限制。
查看切换结果。
当升级结果变为成功时,表示切换成功,当实例状态为运行中时。
在实例基本信息页,可以查看实例当前的版本信息。
说明升级完成后,在升级历史页签,单击目标升级任务升级日志列的查看信息,即可查看升级过程中实例的只读时间及详细的升级过程。其中只读时间为切换时间和切换完成时间之间的时段,此时间段不包括因DNS缓存未刷新而导致无法连接的时间。
回滚
切换后,如需回滚至低版本实例,可通过切换前的最后一次低版本备份克隆新的实例,并将该实例的连接地址修改改为旧实例的连接地址,以实现回滚至低版本。
切换前,系统会对低版本实例进行备份。
升级结果说明
升级过程中,升级历史页签的升级记录中,包含以下升级结果。
升级结果 | 实例状态 | 含义 | 可执行动作 |
运行中 | 迁移中 | 升级任务正在运行。 | 无。 |
同步中 | 迁出数据中 | 逻辑复制状态正常。 |
|
复制断开 | 迁出数据中 | 逻辑复制状态异常。 |
|
只读 | 迁移中 | 正在切换,实例为只读模式,并且正在同步Sequence。 | 中断:取消此次切换操作。 |
切换 | 迁移中 | Sequence同步已完成,现正进行收尾工作。 | 无。 |
取消 | 运行中 | 升级任务取消。 | 无。 |
成功 | 运行中 | 升级任务成功。 | 无。 |