Menu Close

4.6.2. 转储和恢复升级

使用转储和恢复升级时,您必须将所有的数据库内容转储到 SQL 文件转储文件中。请注意,转储和恢复升级比快速升级方法慢,可能需要在生成的 SQL 文件中进行一些手动修复。

您可以使用此方法将数据从任何 RHEL 8 版本的 PostgreSQL 迁移到 RHEL 9 版本的 PostgreSQL 13

在 RHEL 8 和 RHEL 9 系统中,PostgreSQL 数据默认存储在 /var/lib/pgsql/data/ 目录中。

要执行转储和恢复升级,请将用户改为 root

以下流程描述了从 RHEL 8 的默认 Postgreql 10 迁移到 RHEL 9 的 PostgreSQL 13

流程

  1. 在 RHEL 8 系统中,启动 PostgreSQL 10 服务器:

    # systemctl start postgresql.service
  2. 在 RHEL 8 系统中,将所有数据库内容转储到 pgdump_file.sql 文件中:

    su - postgres -c "pg_dumpall > ~/pgdump_file.sql"
  3. 确保正确转储数据库:

    su - postgres -c 'less "$HOME/pgdump_file.sql"'

    结果显示的转储的 sql 文件的路径为:/var/lib/pgsql/pgdump_file.sql

  4. 在 RHEL 9 系统中,安装 postgresql-server 软件包:

    # dnf install postgresql-server

    另外,如果您在 RHEL 8 中使用了任何 PostgreSQL 服务器模块,也需要在 RHEL 9 系统中安装它们。如果您需要编译第三方 PostgreSQL 服务器模块,请根据 postgresql-devel 软件包进行构建。

  5. 在 RHEL 9 系统中,初始化新 PostgreSQL 服务器的数据目录:

    # postgresql-setup --initdb
  6. 在 RHEL 9 系统中,将 pgdump_file.sql 复制到 PostgreSQL 主目录中,并检查是否已正确复制该文件:

    su - postgres -c 'test -e "$HOME/pgdump_file.sql" && echo exists'
  7. 复制 RHEL 8 系统中的配置文件:

    su - postgres -c 'ls -1 $PGDATA/*.conf'

    要复制的配置文件包括:

    • /var/lib/pgsql/data/pg_hba.conf
    • /var/lib/pgsql/data/pg_ident.conf
    • /var/lib/pgsql/data/postgresql.conf
  8. 在 RHEL 9 系统中,启动新的 PostgreSQL 服务器:

    # systemctl start postgresql.service
  9. 在 RHEL 9 系统中,从转储的 sql 文件中导入数据:

    su - postgres -c 'psql -f ~/pgdump_file.sql postgres'