温馨提示×

PostgreSQL如何升级CentOS

小樊
46
2026-07-21 10:10:36
栏目: 云计算

CentOS 上升级 PostgreSQL 常见有 两种场景,你要先确认是哪一种:

  1. 小版本升级(如 14.2 → 14.7)✅ 简单
  2. 大版本升级(如 13 → 15)⚠️ 需要迁移数据

下面我按 最常见、最安全 的方式给你讲。


一、先确认当前环境

# 查看 PostgreSQL 版本
psql --version

# 查看当前数据目录
sudo -u postgres psql -c "SHOW data_directory;"

二、小版本升级(推荐,最安全)

不影响数据,直接 yum 升级

1️⃣ 备份(必须)

pg_dumpall -U postgres > /backup/pg_full.sql

2️⃣ 停止 PostgreSQL

sudo systemctl stop postgresql

3️⃣ 升级

sudo yum update postgresql*

或(如果是官方 repo):

sudo yum update postgresql15*

4️⃣ 启动

sudo systemctl start postgresql
sudo systemctl enable postgresql

✅ 完成


三、大版本升级(重点)

例如:

PostgreSQL 13 → 14 或 15

✅ 推荐方式:pg_upgrade(官方做法)

1️⃣ 安装新版本(不要卸载旧版本)

sudo yum install postgresql15-server postgresql15-contrib

2️⃣ 初始化新实例

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

3️⃣ 停止旧版本

sudo systemctl stop postgresql-13

4️⃣ 使用 pg_upgrade

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

5️⃣ 启动新版本

sudo systemctl start postgresql-15

6️⃣ 删除旧版本(确认无误后)

sudo yum remove postgresql13*

四、使用官方 PostgreSQL YUM 仓库(强烈推荐)

CentOS 自带版本太旧 ❌

安装官方 repo

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 → 启动新实例

七、我可以帮你定制方案

你可以直接把下面信息发我:

  1. CentOS 版本(7 / 8 / Stream)
  2. PostgreSQL 当前版本
  3. 是否是生产环境
  4. 是否允许停机

我可以给你 一条命令都不用改的完整升级方案

0