AWS RDS PostgreSQL升级后无法更新pg_cron与pgaudit扩展求助
问题描述
已将AWS RDS上的PostgreSQL 12.17版本升级至16.1版本,尝试升级pg_cron和pgaudit扩展时持续报错,相关执行信息如下:
postgres=> select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 16.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit (1 row) postgres=> select * from pg_extension; oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition -------+---------+----------+--------------+----------------+------------+---------------------------+--------------- 14501 | plpgsql | 10 | 11 | f | 1.0 | | 16410 | pg_cron | 10 | 11 | f | 1.6 | {16425,16423,16447,16445} | {""} 16413 | pgaudit | 10 | 16412 | t | 1.4.3 | | (3 rows) postgres=> select * from pg_available_extensions where name in ('pgaudit','pg_cron'); name | default_version | installed_version | comment ---------+-----------------+-------------------+--------------------------------- pgaudit | 16.0 | 1.4.3 | provides auditing functionality pg_cron | 1.6 | 1.6 | Job scheduler for PostgreSQL (2 rows) postgres=> ALTER EXTENSION pgaudit update to "16.0"; ERROR: extension "pgaudit" has no update path from version "1.4.3" to version "16.0" postgres=> ALTER EXTENSION pgaudit update to "16.0.0"; ERROR: extension "pgaudit" has no update path from version "1.4.3" to version "16.0.0" postgres=> ALTER EXTENSION pgaudit update to "16.0.1"; ERROR: extension "pgaudit" has no update path from version "1.4.3" to version "16.0.1" postgres=> ALTER EXTENSION pg_cron update to "1.6.1"; ERROR: extension "pg_cron" has no update path from version "1.6" to version "1.6.1"
解决方案
由于跨大版本升级后,旧版扩展与新版PostgreSQL之间没有直接的升级路径,需采用卸载重装的方式完成升级,具体步骤如下:
一、升级pgaudit扩展
- 备份当前pgaudit的审计规则等配置信息,避免重装后丢失
- 卸载旧版本:
DROP EXTENSION pgaudit;
- 安装适配PostgreSQL 16的新版本:
CREATE EXTENSION pgaudit;
- 恢复之前备份的审计配置
二、升级pg_cron扩展
pg_cron关联定时任务,卸载前需先备份任务数据:
- 导出定时任务列表作为备份:
SELECT * FROM cron.job;
将查询结果保存到本地
2. 卸载旧版本:
DROP EXTENSION pg_cron;
- 安装适配PostgreSQL 16的新版本:
CREATE EXTENSION pg_cron;
- 根据备份的任务信息,重新创建所有定时任务
注意事项
- 操作前务必创建RDS实例快照,防止操作失误导致数据丢失
- 卸载重装会短暂中断相关功能,建议在业务低峰期执行
- pg_cron卸载后原有任务会被彻底清除,必须提前备份再重建
内容的提问来源于stack exchange,提问作者nmakb
相关产品推荐
相关产品推荐

