使用pg_upgrade升级Aurora PostgreSQL 13至15失败求助
解决Amazon Aurora PostgreSQL 13升级至15时pg_upgrade的函数缺失错误
问题原因
报错中的rds_get_stat_connections_counters是Amazon Aurora专属的系统函数,归属rdsadmin用户/ schema。在Aurora PostgreSQL 15版本中,该函数已被移除,且pg_upgrade过程错误地尝试将原本属于系统的函数恢复到public schema,而新版本的rdsutils.so中已不存在该函数定义。
解决方案
1. 跳过有问题的TOC条目恢复
根据错误信息,问题对应TOC条目225,执行pg_restore时直接排除该条目即可继续:
pg_restore --exclude-toc-entry=225 -d <目标数据库名> <备份文件路径>
2. 优化后续备份策略
Aurora的rdsadmin schema包含系统级对象,无需用户手动备份,升级后的集群会自动维护这些组件。后续备份时需排除相关对象:
- 使用
pg_dump时添加--exclude-schema=rdsadmin参数,避免备份系统对象 - 或添加
--exclude-user=rdsadmin,排除该用户的所有对象
3. 改用Aurora官方升级方式
Amazon Aurora推荐使用AWS原生工具完成版本升级,而非手动执行pg_upgrade:
- 控制台:进入RDS/Aurora控制台,选择目标集群执行「Modify」操作,指定目标PostgreSQL版本
- CLI:执行
modify-db-cluster命令并指定--engine-version参数
官方流程会自动处理Aurora专属组件的兼容性,规避手动工具的适配问题。
4. 替代统计方案
若需要原函数的连接统计功能,可使用Aurora PG15的内置对象替代:
- 查询
pg_stat_activity视图获取实时连接状态 - 查找是否有替代的系统函数:
SELECT proname FROM pg_proc WHERE proname LIKE '%stat_connection%';
内容的提问来源于stack exchange,提问作者Theo Modesto
相关产品推荐
相关产品推荐

