3.9. 在 RHEL 10 上将 PostgreSQL 实例从之前的 RHEL 版本迁移到 PostgreSQL 16
如果您已在 RHEL 9 上运行了低于 16 的 PostgreSQL 版本,并希望将数据库软件移到运行 RHEL 10 的主机上,您可以迁移数据库。
可用的迁移方法是:
- 备份和恢复升级 - 这个方法可能需要更多的时间,但在大多数情况下可以正常工作。
-
使用
pg_upgrade工具的快速升级 - 这个方法更快,但只有在从 PostgreSQL 13 迁移到 16 ,且硬件架构保持不变的情况下才可以正常工作。
在 PostgreSQL 迁移前,始终备份源主机上的 /var/lib/pgsql/data/ 目录。
3.9.1. 使用备份和恢复方法迁移到 RHEL 10 上的 PostgreSQL 复制链接链接已复制到粘贴板!
您可以使用备份和恢复方法将数据从 PostgreSQL 的任何 RHEL 8 或 RHEL 9 版本迁移到 RHEL 10 上 PostgreSQL 的任何相等或更新版本。
先决条件
- 现有数据库服务器在 RHEL 8 或 RHEL 9 上运行,并使用从 RHEL 存储库安装的 PostgreSQL 版本。
-
两个主机上的区域设置是相同的。要验证这一点,请比较两个主机上的
echo $LANG命令的输出。
流程
在具有您要迁移的现有 PostgreSQL 实例的主机上:
将所有数据库导出到
/var/lib/pgsql/pgdump_file.sql文件中:# su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"检查导出的文件:
# su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'将您在之前步骤中创建的数据库转储和 PostgreSQL 配置文件复制到 RHEL 10 主机,例如:
# scp /var/lib/pgsql/pgdump_file.sql \ /var/lib/pgsql/data/pg_hba.conf \ /var/lib/pgsql/data/pg_ident.conf \ /var/lib/pgsql/data/postgresql.conf \ <user>@<rhel_10_host>:/tmp/
在 RHEL 10 主机上:
安装
postgresql-server软件包:# dnf install postgresql-server初始化
/var/lib/pgsql/data/目录:# postgresql-setup --initdb将复制的配置文件移到
/var/lib/pgsql/data/目录中:# mv /tmp/pg_hba.conf \ /tmp/pg_ident.conf \ /tmp/postgresql.conf \ /var/lib/pgsql/data/确保
/var/lib/pgsql/data/ directory目录中内容的所有权正确:# chown -R postgres:postgres /var/lib/pgsql/data/对
/var/lib/pgsql/data/恢复 SELinux 上下文:# restorecon -Rv /var/lib/pgsql/data/启用并启动
postgresql服务:# systemctl enable --now postgresql.service以
postgres用户身份导入数据:# su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'- 验证您的数据库,并确保您的使用 PostgreSQL 服务器的应用程序可以正常工作。