在 CentOS 上升级 PostgreSQL 常见有 两种场景,你要先确认是哪一种:
下面我按 最常见、最安全 的方式给你讲。
# 查看 PostgreSQL 版本
psql --version
# 查看当前数据目录
sudo -u postgres psql -c "SHOW data_directory;"
✅ 不影响数据,直接 yum 升级
pg_dumpall -U postgres > /backup/pg_full.sql
sudo systemctl stop postgresql
sudo yum update postgresql*
或(如果是官方 repo):
sudo yum update postgresql15*
sudo systemctl start postgresql
sudo systemctl enable postgresql
✅ 完成
例如:
PostgreSQL 13 → 14 或 15
pg_upgrade(官方做法)sudo yum install postgresql15-server postgresql15-contrib
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl stop postgresql-13
sudo -i -u postgres
/usr/pgsql-15/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/13/data \
--new-datadir=/var/lib/pgsql/15/data \
--old-bindir=/usr/pgsql-13/bin \
--new-bindir=/usr/pgsql-15/bin
sudo systemctl start postgresql-15
sudo yum remove postgresql13*
CentOS 自带版本太旧 ❌
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
(如果是 CentOS 8)
https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
| 问题 | 解决 |
|---|---|
| 编码不一致 | 新实例用相同 initdb 参数 |
| 插件不存在 | 先安装 contrib |
| 时间很长 | 使用 --link 参数 |
| CentOS 7 EOL | 建议迁移到 Rocky / Alma |
✅ 小版本升级
备份 → yum update → 重启
✅ 大版本升级
安装新版本 → pg_upgrade → 启动新实例
你可以直接把下面信息发我:
我可以给你 一条命令都不用改的完整升级方案 ✅