4.11. 从 RHEL 9 版本的 PostgreSQL 16 升级到 PostgreSQL 18
您可以将 PostgreSQL 数据库服务器从 RHEL 9 上的版本 16 升级到 18 以访问新功能和改进。
有关显著的增强和更改,请参阅 RHEL 9.8 发行说明文档中的发行说明。
先决条件
- 现有数据库服务器使用 RHEL 9 上的 PostgreSQL 16。
主机在存放
/var/lib/pgsql/目录的磁盘上有足够的可用空间。例如,如果目录的大小为 10 GiB,则至少需要 10 GiB 的额外可用磁盘空间。
流程
显示当前数据页校验和状态:
# pg_controldata /var/lib/pgsql/data | grep "Data page checksum"Data page checksum version: 0如果命令返回
0,则禁用数据页校验和。停止
postgresql服务:# systemctl stop postgresql如果禁用了数据页校验和,请确定策略:
如果要在升级前启用数据页校验和以提高数据完整性:
启用数据页校验和::
# pg_checksums --enable -D /var/lib/pgsql/data/根据数据库的大小,此操作可能需要大量时间。
验证激活:
# pg_controldata /var/lib/pgsql/data | grep "Data page checksum"Data page checksum version: 1
如果要禁用数据页校验和,请将
PGSETUP_INITDB_OPTIONS环境选项设置为-- no-data-checksums:# export PGSETUP_INITDB_OPTIONS="--no-data-checksums"
从 PostgreSQL 16 切换到 PostgreSQL 18 软件包:
# dnf module switch-to postgresql:18安装
postgresql-upgrade包:# dnf install postgresql-upgrade执行升级过程:
# postgresql-setup --upgradepostgresql-setupshell 脚本将/var/lib/pgsql/data/目录重命名为/var/lib/pgsql/data-old/,并使用pg_upgrade工具将数据库迁移到重新创建的/var/lib/pgsql/data/目录中。重要pg_upgrade工具只迁移数据库,而不迁移配置文件。迁移后,/var/lib/pgsql/data/仅包含默认的.conf文件。如果您之前有自定义配置文件,请从/var/lib/pgsql/data-old/目录中复制它们,并确保它们与新的 PostgreSQL 版本兼容。启动
postgresql服务:# systemctl start postgresql清理和分析所有数据库:
# su postgres -c 'vacuumdb --all --analyze-in-stages'- 验证您的数据库,并确保您的使用 PostgreSQL 服务器的应用程序可以正常工作。
可选:删除
/var/lib/pgsql/data-old/目录,该目录包含迁移之前的数据库和配置文件。# rm -r /var/lib/pgsql/data-old/可选:删除
postgresql-upgrade软件包:# dnf remove postgresql-upgrade