本文介绍RDS PostgreSQL大版本升级检查报告的内容详情、常见报错以及处理方式。
如果RDS PostgreSQL大版本升级检查报告的结果为失败,您可以单击查看信息查看报告详细内容,大版本升级检查报告包含以下内容。
说明 大版本升级的更多信息,请参见升级数据库大版本。
user_check_report
检查是否存在后台添加的多余超级账号或者加密方式不正确的普通账号。
报错 | 可能原因 | 解决方法 |
---|---|---|
invalid superuser: ["user_01"] | 存在冗余的超级账号,使用此账号连接数据库将会使数据库只读设置无效,从而导致与大版本升级的数据不一致。 | 冗余的超级账号请提工单联系售后服务删除。 |
invalid user: ["user_02"] | 存在异常的普通账号,此账号将会导致升级后账号无法连接。 | 重置报错账号的密码。 |
pg_upgrade_internal.log
兼容性检查日志。
报错 | 可能原因 | 解决方法 |
---|---|---|
A list of problem libraries is in the file: loadable_libraries.txt | loadable_libraries.txt文件中存在高版本不兼容的插件。 | 排查loadable_libraries.txt报告项中列出的插件,根据实际需要进行评估是否删除,建议在不影响业务稳定的情况下删除后升级。各版本支持的插件列表请参见:支持插件列表。 |
A list of tables with the problem is in the file: tables_with_oids.txt | 建表时声明了WITH OIDS ,该声明在PostgreSQL 12或以上版本不支持。
|
|
pg_upgrade_server.log
展示目标实例启动的日志。
loadable_libraries.txt
展示不兼容的library,通常对应了不兼容的插件。
报错 | 可能原因 | 解决办法 |
---|---|---|
could not load library "$libdir/pgrouting-2.6.2": ERROR: could not access file "$libdir/pgrouting-2.6.2": No such file or directory | 选定的高版本中不支持pgrouting插件。 | 排查loadable_libraries.txt文件中列出的插件,根据实际需要进行评估是否删除,建议在不影响业务稳定的情况下删除后升级。各版本支持的插件列表请参见:支持插件列表。 |
could not load library "$libdir/jsonbx": ERROR: could not access file "$libdir/jsonbx": No such file or directory | PostgreSQL 9.4对JSON类型支持不完善,需要jsonbx插件支持,PostgreSQL 10或以上版本原生支持JSON,没有该插件。 | 请在高版本中验证jsonbx插件的相关函数使用,根据实际需要进行评估是否删除插件,然后在不影响业务稳定的情况下删除后升级。jsonbx插件函数使用差异请参见jsonbx插件函数使用差异。 |
|
|
注意 postgis插件各版本间存在差异(例如wkt格式的解析报错不同),升级后可能影响业务处理,建议在升级postgis插件前,先克隆当前实例,在克隆实例中对postgis插件进行升级测试,完全符合业务需求后,再在原实例中升级postgis插件。克隆的具体操作,请参见备份PostgreSQL数据和恢复PostgreSQL数据。
|
jsonbx插件的部分函数用法在PostgreSQL的不同版本中执行结果可能存在差异,具体如下表所示,您需要在升级前评估是否删除插件。
函数用法 | PostgreSQL 9.4执行结果 | PostgreSQL 10或以上版本执行结果 |
---|---|---|
select '{"a":1, "b":2, "c":3}'::jsonb - 2; | {"a": 1, "b": 2} | ERROR: cannot delete from object using integer index |
select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]); | {"a": 1, "c": 3} | ERROR: function jsonb_delete(jsonb, text[]) does not exist |
select '{"a":{"c":1, "d":2}, "b":3}'::jsonb - '{a, c}'::text[]; | {"a": {"d": 2}, "b": 3} | {"b": 3} |
tables_with_oids.txt
展示声明了WITH OIDS
的表清单。