在 CentOS 上升级 PostgreSQL 常见有 两种场景,下面我按 最常用、最安全 的方式给你讲清楚,并附示例命令。
psql --version
systemctl status postgresql
确认:
/var/lib/pgsql/版本号/data)| 场景 | 推荐方式 |
|---|---|
| 小版本升级(12.8 → 12.15) | yum 直接升级 |
| 大版本升级(12 → 14、13 → 15) | pg_upgrade 或 逻辑备份恢复 |
✅ 不影响数据,直接升级
systemctl stop postgresql
yum update postgresql*
或指定版本:
yum update postgresql-server
systemctl start postgresql
✅ 完成
⚠️ 一定要先备份
yum install postgresql14-server postgresql14-contrib
/usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl stop postgresql-12
su - postgres
pg_upgrade \
--old-datadir=/var/lib/pgsql/12/data \
--new-datadir=/var/lib/pgsql/14/data \
--old-bindir=/usr/pgsql-12/bin \
--new-bindir=/usr/pgsql-14/bin
systemctl start postgresql-14
适合 数据量不大 的情况。
pg_dumpall -U postgres > /backup/full.sql
安装新版本后:
psql -U postgres -f /backup/full.sql
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
psql --version
SELECT version();
systemctl status postgresql
❌ postmaster.pid 存在
✅ 删除旧 pid 文件或确认旧实例已停止
❌ 端口冲突
✅ 检查 postgresql.conf 中 port
你可以直接告诉我:
1️⃣ CentOS 版本
2️⃣ 当前 PostgreSQL 版本
3️⃣ 目标版本
我可以 给你一套完全可复制的命令方案 ✅