如何在保留PostGIS的情况下升级AWS RDS PostgreSQL 14至15版本?
解决方案:不删除核心PostGIS升级RDS PostgreSQL至15.2
可以在保留核心PostGIS扩展的前提下完成升级,但需要先处理损坏的postgis_raster扩展并清理无用依赖,具体步骤如下:
1. 先备份所有数据库
升级前务必完成全量备份,避免操作失误导致数据丢失。
2. 清理损坏的postgis_raster及无用依赖扩展
针对每个包含PostGIS的数据库执行以下操作:
- 删除损坏的
postgis_raster扩展:
如果上述命令因扩展损坏报错,尝试强制删除:DROP EXTENSION IF EXISTS postgis_raster CASCADE;DROP EXTENSION postgis_raster FORCE; - 确认所有PostGIS依赖扩展已清理,执行查询检查:
若返回结果不为空,逐个删除这些未使用的依赖:SELECT extname FROM pg_extension WHERE extname IN ('address_standardizer', 'address_standardizer_data_us', 'postgis_tiger_geocoder', 'postgis_topology');DROP EXTENSION IF EXISTS [扩展名称] CASCADE;
3. 触发PostgreSQL实例升级
完成上述清理后,直接通过AWS控制台或CLI触发RDS实例升级至PostgreSQL 15.2:
- RDS会自动将核心PostGIS扩展升级至与PG15兼容的版本(无需手动指定版本)
- 若升级前仍提示PostGIS版本问题,可先在每个数据库中执行:
让RDS将PostGIS升级至当前PG版本支持的最高兼容版本,再执行PG主版本升级。ALTER EXTENSION postgis UPDATE;
关键说明
- RDS PostgreSQL主版本升级时,扩展的兼容性由AWS自动处理,只要无损坏扩展和冗余依赖,核心PostGIS可保留并自动升级到适配PG15的版本
postgis_extensions_upgrade()函数在RDS中可能因权限限制无法生效,优先依赖RDS的内置升级机制或ALTER EXTENSION命令处理
内容的提问来源于stack exchange,提问作者Peter Kusza
相关产品推荐
相关产品推荐

