在 CentOS 上升级 PostgreSQL 版本,常见做法是使用官方 RPM 仓库安装新版本,再迁移数据。下面按最稳妥、最常用的方式一步步说明(以 PostgreSQL 12 → 15 为例,其他版本同理)。
pg_dumpall > /tmp/pg_full_backup.sql
或物理备份数据目录:
systemctl stop postgresql
cp -r /var/lib/pgsql/12 /var/lib/pgsql/12_bak
psql --version
rpm -qa | grep postgresql
以 PostgreSQL 15 为例:
dnf 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
dnf install -y postgresql15-server postgresql15
/usr/pgsql-15/bin/postgresql-15-setup initdb
systemctl enable postgresql-15
systemctl start postgresql-15
默认新版本端口通常是 5433(避免冲突)
systemctl stop postgresql-12
systemctl stop postgresql-15
su - postgres
/usr/pgsql-15/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/12/data \
--new-datadir=/var/lib/pgsql/15/data \
--old-bindir=/usr/pgsql-12/bin \
--new-bindir=/usr/pgsql-15/bin \
--check
确认无问题后去掉 --check 再执行一次。
vi /var/lib/pgsql/15/data/postgresql.conf
port = 5432
systemctl start postgresql-15
dnf remove postgresql12*
pg_dumpall | psql -h localhost -p 5433
如果你告诉我:
我可以给你精确命令版升级方案。