在 CentOS 上切换 PostgreSQL 版本,常见有 三种场景。下面按使用频率从高到低说明,并给出推荐做法。
这是 生产环境最安全、最常用 的方式。
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
CentOS 8 用
EL-8,CentOS 7 用EL-7
yum list available | grep postgresql
常见版本:
sudo yum install -y postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl stop postgresql-14
sudo systemctl disable postgresql-14
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
✅ 此时两个版本可共存,只是端口不同(默认 5432 / 5433)
如果你只是想“切换系统默认 PostgreSQL”,而不是多版本共存:
sudo yum remove postgresql postgresql-server
⚠️ 注意:不要误删数据目录 /var/lib/pgsql/
sudo yum install -y postgresql15-server
sudo systemctl stop postgresql
sudo mv /var/lib/pgsql/data /var/lib/pgsql/data.bak
sudo cp -r /var/lib/pgsql/15/data /var/lib/pgsql/data
适用于 大版本升级(如 13 → 16)
pg_upgrade \
--old-datadir=/var/lib/pgsql/13/data \
--new-datadir=/var/lib/pgsql/16/data \
--old-bindir=/usr/pgsql-13/bin \
--new-bindir=/usr/pgsql-16/bin
✅ 官方推荐
❌ 操作复杂,需停机
编辑配置文件:
vim /var/lib/pgsql/15/data/postgresql.conf
修改:
port = 5433
然后:
sudo systemctl restart postgresql-15
psql --version
psql -U postgres -c "SELECT version();"
| 场景 | 推荐方案 |
|---|---|
| 生产环境 | 官方仓库 + 多版本共存 |
| 测试环境 | 直接安装新版本 |
| 数据库升级 | pg_upgrade |
| 简单切换 | systemctl 启停不同版本 |
如果你愿意,可以告诉我:
我可以给你 一条命令级的操作方案。