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 的额外可用磁盘空间。

流程

  1. 显示当前数据页校验和状态:

    # pg_controldata /var/lib/pgsql/data | grep "Data page checksum"
    Data page checksum version:           0

    如果命令返回0,则禁用数据页校验和。

  2. 停止 postgresql 服务:

    # systemctl stop postgresql
  3. 如果禁用了数据页校验和,请确定策略:

    • 如果要在升级前启用数据页校验和以提高数据完整性:

      1. 启用数据页校验和::

        # pg_checksums --enable -D /var/lib/pgsql/data/

        根据数据库的大小,此操作可能需要大量时间。

      2. 验证激活:

        # 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"
  4. 从 PostgreSQL 16 切换到 PostgreSQL 18 软件包:

    # dnf module switch-to postgresql:18
  5. 安装 postgresql-upgrade 包:

    # dnf install postgresql-upgrade
  6. 执行升级过程:

    # postgresql-setup --upgrade

    postgresql-setup shell 脚本将 /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 版本兼容。

  7. 启动 postgresql 服务:

    # systemctl start postgresql
  8. 清理和分析所有数据库:

    # su postgres -c 'vacuumdb --all --analyze-in-stages'
  9. 验证您的数据库,并确保您的使用 PostgreSQL 服务器的应用程序可以正常工作。
  10. 可选:删除 /var/lib/pgsql/data-old/ 目录,该目录包含迁移之前的数据库和配置文件。

    # rm -r /var/lib/pgsql/data-old/
  11. 可选:删除 postgresql-upgrade 软件包:

    # dnf remove postgresql-upgrade
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部