AWS RDS PostgreSQL 10.9升级至11.4失败:PostGIS版本问题
解决AWS RDS PostgreSQL 10.9升级至11.4时PostGIS版本兼容问题
你碰到的是PostGIS版本升级的典型路径限制问题——PostGIS不支持跨系列直接跳级升级,再加上AWS RDS的扩展管理有特定规则,下面是一步步的可行解决方案:
第一步:排查所有数据库的PostGIS相关扩展版本
先在每个包含PostGIS的数据库中执行查询,确认所有关联扩展的版本(比如postgis、postgis_topology、postgis_raster):
SELECT n.nspname AS schema_name, e.extname AS extension_name, e.extversion AS current_version FROM pg_extension e JOIN pg_namespace n ON e.extnamespace = n.oid WHERE e.extname LIKE 'postgis%';
第二步:先把PostGIS升级到2.4系列的最新兼容版本
你执行ALTER EXTENSION postgis UPDATE;提示已是2.4.4,大概率是当前PostgreSQL 10.9的RDS补丁版本限制了最高可升级的2.4.x版本。先给你的RDS实例打最新小版本补丁:
- 登录AWS控制台找到目标RDS实例,点击「修改」,选择升级到PostgreSQL 10系列的最终小版本(比如10.23),应用更新。
更新完成后,在每个相关数据库中执行:
ALTER EXTENSION postgis UPDATE; ALTER EXTENSION postgis_topology UPDATE; -- 若安装了该扩展 ALTER EXTENSION postgis_raster UPDATE; -- 若安装了该扩展
这一步会把PostGIS升级到2.4系列的最新版(比如2.4.9),这是后续跳级到2.5.x的必要前提。
第三步:升级PostGIS到2.5.1
现在PostGIS已是2.4系列最新版,执行以下命令升级到2.5.1:
ALTER EXTENSION postgis UPDATE TO '2.5.1'; ALTER EXTENSION postgis_topology UPDATE TO '2.5.1'; ALTER EXTENSION postgis_raster UPDATE TO '2.5.1';
PostGIS官方支持从2.4.latest升级到2.5.x,RDS的扩展仓库也会提供这条升级路径,这一步应该能成功。
第四步:重新触发PostgreSQL版本升级
完成PostGIS升级后,回到AWS控制台重新启动PostgreSQL 10.9到11.4的升级流程,这次预升级检查应该能顺利通过。
备选方案:导出/导入数据(若上述路径失效)
如果因为RDS的扩展限制无法走在线升级路径,就只能用导出导入的方式迁移:
- 用
pg_dump导出所有数据库的结构和数据:pg_dump -h your-rds-endpoint -U your-username -d your-database -Fc -f db_dump.dump - 创建新的PostgreSQL 11.4 RDS实例,在新实例中安装PostGIS 2.5.1:
CREATE EXTENSION postgis WITH VERSION '2.5.1'; CREATE EXTENSION postgis_topology WITH VERSION '2.5.1'; -- 按需创建 - 用
pg_restore导入数据到新实例:pg_restore -h new-rds-endpoint -U your-username -d your-new-database -Fc db_dump.dump - 验证数据无误后,切换应用到新实例,再删除旧实例。
重要提醒:无论用哪种方法,操作前一定要先创建RDS实例的快照,防止数据丢失!
内容的提问来源于stack exchange,提问作者2011
相关产品推荐
相关产品推荐

