温馨提示×

centos怎样升级postgresql

小樊
47
2026-09-03 08:28:52
栏目: 云计算

在 CentOS 上升级 PostgreSQL,通常分为 小版本升级(如 13.4 → 13.10)大版本升级(如 12 → 15)。下面分别说明。


一、确认当前版本

psql --version
# 或
rpm -qa | grep postgresql

查看数据目录(通常):

psql -U postgres -c "SHOW data_directory;"

二、小版本升级(同大版本)

例如:PostgreSQL 13.4 → 13.10

1. 备份(必须)

pg_dumpall > /backup/all.sql

2. 停止服务

systemctl stop postgresql-13

3. 使用官方 yum 源升级

yum update postgresql*

4. 启动服务

systemctl start postgresql-13

✅ 小版本升级 不需要迁移数据


三、大版本升级(如 12 → 15)

⚠️ 大版本不兼容,必须迁移数据

方法一:使用 pg_upgrade(推荐,快)

1. 添加 PostgreSQL 官方源

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2. 安装新版本

yum install -y postgresql15-server postgresql15

3. 初始化新版本(不要启动)

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

4. 停止所有 PostgreSQL

systemctl stop postgresql-12
systemctl stop postgresql-15

5. 使用 pg_upgrade

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

6. 启动新版本

systemctl start postgresql-15

方法二:逻辑导出导入(最安全)

pg_dumpall -U postgres > all.sql
systemctl stop postgresql-12
systemctl start postgresql-15
psql -U postgres -f all.sql

✅ 适合数据量不大、跨平台迁移


四、常见问题

1. 端口冲突

修改新版本端口:

vi /var/lib/pgsql/15/data/postgresql.conf
port = 5433

2. 扩展不兼容

postgispg_stat_statements 需重新安装对应版本扩展

3. 开机自启

systemctl enable postgresql-15

五、升级前必做清单 ✅

  • [ ] 完整备份
  • [ ] 确认磁盘空间充足
  • [ ] 测试环境先演练
  • [ ] 应用连接配置更新

如果你能告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 当前 PostgreSQL 版本
  • 目标版本

我可以给你精确命令

0