4.10.2. 转储和恢复升级
使用转储和恢复升级时,您必须将所有的数据库内容转储到 SQL 文件转储文件中。请注意,转储和恢复升级比快速升级方法慢,可能需要在生成的 SQL 文件中进行一些手动修复。
您可以使用此方法将数据从任何 RHEL 8 版本的 PostgreSQL 迁移到 RHEL 9 中任意相等或更新版本的 PostgreSQL。
在 RHEL 8 和 RHEL 9 系统中,PostgreSQL 数据默认存储在 /var/lib/pgsql/data/ 目录中。
要执行转储和恢复升级,请将用户改为 root。
以下流程描述了从 RHEL 8 的默认 PostgreSQL 10 版本迁移到 RHEL 9 的 PostgreSQL 13。
流程
在 RHEL 8 系统中,启动 PostgreSQL 10 服务器:
# systemctl start postgresql.service在 RHEL 8 系统中,将所有数据库内容转储到
pgdump_file.sql文件中:su - postgres -c "pg_dumpall > ~/pgdump_file.sql"确保正确转储数据库:
su - postgres -c 'less "$HOME/pgdump_file.sql"'结果显示的转储的 sql 文件的路径为:
/var/lib/pgsql/pgdump_file.sql。在 RHEL 9 系统中,安装
postgresql-server软件包:# dnf install postgresql-server另外,如果您在 RHEL 8 中使用了任何 PostgreSQL 服务器模块,也需要在 RHEL 9 系统中安装它们。如果您需要编译第三方 PostgreSQL 服务器模块,请根据
postgresql-devel软件包进行构建。在 RHEL 9 系统中,初始化新 PostgreSQL 服务器的数据目录:
# postgresql-setup --initdb在 RHEL 9 系统中,将
pgdump_file.sql复制到 PostgreSQL 主目录中,并检查是否已正确复制该文件:su - postgres -c 'test -e "$HOME/pgdump_file.sql" && echo exists'复制 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
-
在 RHEL 9 系统中,启动新的 PostgreSQL 服务器:
# systemctl start postgresql.service在 RHEL 9 系统中,从转储的 sql 文件中导入数据:
su - postgres -c 'psql -f ~/pgdump_file.sql postgres'