本文介绍RDS PostgreSQL大版本升级检查报告的内容详情、常见报错以及处理方式。
检查报告将同时提供中文和英文内容,请根据需要选择适合的语言进行查看。
检查项
如果您在升级数据库大版本的升级检查步骤,检查报告的结果为失败,可以单击查看信息查看检查报告的详细内容。
如下是检查报告中的检查模块及常见的报错:
警告
检查内容
大版本升级时,源实例的只读时间、所需的内存和磁盘资源会受到数据库对象数量的影响。如果实例的数据库对象数量过多,而磁盘和内存资源不足,可能会导致升级失败。在此情况下,系统将在警告栏中提供推荐内存、最小推荐内存以及推荐磁盘大小。
推荐内存:在大版本升级过程中,系统能够对包含多个数据库的实例提供并发升级功能。因此,当实例的内存大于或等于推荐内存,将以最快的速度进行升级,以尽量减少实例的只读时间。
最小推荐内存:实例内存大于等于最小推荐内存时,不会因为内存资源不足导致升级失败。实例的只读时间并不一定是最短的,因为系统将对每个数据库进行串行升级。
推荐磁盘大小:在大版本升级过程中,系统会临时复制所有对象定义,这将导致inode的消耗增加一倍。如果升级时的磁盘空间不足以满足推荐的磁盘大小,可能会导致升级失败。
警告与解决办法
磁盘警告
警告格式:
总磁盘空间: {*} GB; 已使用磁盘: {*} GB; 已使用inode: {*}; bytes-per-nodes: {*}; 升级需要最少磁盘空间: {*} GB
。可能原因:对象数量过多,需要足够大小的磁盘空间。
解决办法:
对于蓝绿部署,在配置升级参数时,新实例的存储空间必须大于或等于进行升级所需的最小磁盘空间。
对于本地升级,在升级前应对源实例进行存储空间的扩容,扩容后的存储空间必须大于或等于进行升级所需的最小磁盘空间。详情请参见变更配置。
内存警告
警告格式:
当前内存: {*} GB; 推荐内存: {*} GB; 最低内存: {*} GB
。可能原因:对象数量过多,需确保拥有足够的内存,以最大程度地减少在升级过程中实例的只读时间。
解决办法:
对于蓝绿部署,在配置升级参数时,新实例规格中的内存必须大于或等于最低内存要求。
对于本地升级,如果实例规格小于推荐内存,需要在升级前对源实例进行升配。详情请参见变更配置。
订阅警告
警告格式:
实例存在复制槽订阅端,为防止订阅数据不一致,建议查看阿里云帮助文档
。可能原因:实例中存在复制槽订阅端,您可以通过执行
select * from pg_subscription;
进行查看。解决办法:参见如何避免在升级过程中出现复制槽抢占导致的数据不同步问题,进行处理。
错误
检查内容
检查是否存在后台添加的多余超级账号或者加密方式不正确的普通账号。
预检查是否失败。如若失败,检查报告将显示“pg_upgrade错误日志”项。
是否在pg_catalog schema中安装了pgcrypto插件。
错误与解决办法
账号错误
错误格式:
无效超级账户:{*};无效账户:{*}; 请查看阿里云帮助文档
。可能原因:存在冗余的超级账号或者存在异常的普通账号。
解决办法:
对于冗余的超级账号,请提工单联系售后服务删除。
对于异常的普通账号,请重置报错账号的密码。
预检查错误
错误格式:
pg_upgrade预检查任务失败, 需要查看[pg_upgrade错误日志]以及[pg_upgrade相关文件与报错]
。可能原因:预检查失败。
解决办法:请参照pg_upgrade错误日志,解决日志问题。
pgcrypto插件错误
错误格式:
在数据库:{*}中的schema:pg_catalog中安装了pg_crypto插件,请查看阿里云帮助文档
。可能原因:由于pgcrypto在pg_catalog中创建了仅在高版本中存在的函数,导致了大版本升级的失败。
解决办法:删除每个数据库中的pgcrypto插件,然后在非pg_catalog schema中创建该插件。
pg_upgrade错误日志
检查内容
检查大版本间是否存在不兼容的插件、关键字等。
常见报错
pg_upgrade相关文件与报错
loadable_libraries.txt
展示不兼容的library,通常对应了不兼容的插件。
如下是常见的不兼容插件及解决办法:
tables_with_oids.txt
展示声明了WITH OIDS
的表清单。