PostgreSQL14 Beta版升级至正式版方法及启动报错问题咨询
PostgreSQL 14 Beta升级到正式版操作指南
错误原因说明
该启动报错属于PostgreSQL版本迭代的正常现象:即使大版本号相同,Beta测试版与正式GA版的系统目录版本(CATALOG_VERSION_NO)不一致,两者生成的数据库集群文件互不兼容,无法直接用正式版二进制启动Beta版创建的数据库集群。
注意事项
不要使用pg_upgrade工具进行本次升级:pg_upgrade要求新旧两个版本的CATALOG_VERSION_NO完全一致,跨Beta/正式版的场景不符合要求,必须使用逻辑导出导入的方式完成升级。
正确升级步骤
- 第一步:恢复Beta版运行环境
临时调整PATH优先级或者重新安装对应版本的PostgreSQL 14 Beta二进制包,不要修改原有数据目录,确保可以正常启动Beta版数据库并访问所有数据。 - 第二步:全量导出Beta版数据
使用Beta版自带的pg_dumpall工具导出全量数据,命令参考:
导出完成后校验文件完整性,确认无截断、权限正常。/path/to/beta-pgsql-14/bin/pg_dumpall -U postgres -f /安全存储路径/pg14-beta-full-dump.sql - 第三步:备份原有数据目录
执行命令备份旧集群数据,避免操作失误丢失数据:mv /var/lib/pgsql/14/data /var/lib/pgsql/14/data-beta-backup - 第四步:用正式版初始化新集群
执行正式版的initdb命令创建新的数据库集群,初始化参数和原有Beta版保持一致即可:/usr/pgsql-14/bin/initdb -D /var/lib/pgsql/14/data -U postgres --encoding=UTF8 --locale=en_US.UTF8 - 第五步:启动正式版集群并导入数据
先启动新的正式版集群:
再执行导入操作:/usr/pgsql-14/bin/pg_ctl -D /var/lib/pgsql/14/data -l /var/lib/pgsql/14/logfile start/usr/pgsql-14/bin/psql -U postgres -f /安全存储路径/pg14-beta-full-dump.sql - 第六步:校验业务可用性
导入完成后核对所有库表数据、用户权限、自定义插件、业务配置是否正常,确认无误后即可对外提供服务。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

