CentOS7 PostgreSQL 9.2 升级到 15 完整教程

一、前言(升级原因)

  1. 旧版本:PostgreSQL 9.2(2013年,已停止维护)
  2. 报错:不支持 CREATE INDEX IF NOT EXISTS、ADD COLUMN IF NOT EXISTS
  3. 目标版本:PostgreSQL 15.8(稳定版、现代语法全支持)
  4. 系统:CentOS 7 x86_64

二、【重要】升级前全量备份

1. 切换 postgres 用户备份(解决权限问题)

bash 复制代码
su - postgres

2. 执行备份(数据库名:zilu)

bash 复制代码
pg_dump zilu -Fc -f /var/lib/pgsql/backup_zilu_before_upgrade.dump

3. 退出用户

bash 复制代码
exit

4. 验证备份文件(确保生成)

bash 复制代码
ls -lh /var/lib/pgsql/backup_zilu_before_upgrade.dump

出现文件即备份成功!


三、清理旧源 + 安装 PostgreSQL 15

1. 清理失效 yum 源

bash 复制代码
yum install -y yum-utils
yum-config-manager --disable pgdg12 pgdg13 pgdg14 pgdg15
yum clean all
rm -rf /var/cache/yum

2. 安装 PG15 依赖包

bash 复制代码
yum install -y https://mirrors.aliyun.com/postgresql/repos/yum/15/redhat/rhel-7-x86_64/postgresql15-15.8-1PGDG.rhel7.x86_64.rpm https://mirrors.aliyun.com/postgresql/repos/yum/15/redhat/rhel-7-x86_64/postgresql15-libs-15.8-1PGDG.rhel7.x86_64.rpm

3. 安装 PG15 服务端

bash 复制代码
yum install -y https://mirrors.aliyun.com/postgresql/repos/yum/15/redhat/rhel-7-x86_64/postgresql15-server-15.8-1PGDG.rhel7.x86_64.rpm https://mirrors.aliyun.com/postgresql/repos/yum/15/redhat/rhel-7-x86_64/postgresql15-contrib-15.8-1PGDG.rhel7.x86_64.rpm

4. 初始化数据库

bash 复制代码
/usr/pgsql-15/bin/postgresql-15-setup initdb

5. 启动并开机自启

bash 复制代码
systemctl start postgresql-15
systemctl enable postgresql-15

6. 验证版本

bash 复制代码
su - postgres -c "/usr/pgsql-15/bin/psql -c 'SELECT version();'"

显示 PostgreSQL 15.8 安装成功!


四、创建 zilu 数据库(SpringBoot 用)

bash 复制代码
su - postgres -c "/usr/pgsql-15/bin/psql -c 'CREATE DATABASE zilu;'"

查看数据库

bash 复制代码
su - postgres -c "/usr/pgsql-15/bin/psql -c '\l'"

五、恢复备份数据(关键步骤)

bash 复制代码
su - postgres -c "/usr/pgsql-15/bin/pg_restore -d zilu /var/lib/pgsql/backup_zilu_before_upgrade.dump"

六、配置密码 + 远程连接

1. 设置 postgres 密码

bash 复制代码
su - postgres -c "/usr/pgsql-15/bin/psql -c \"ALTER USER postgres WITH PASSWORD 'password1234..';\""

2. 开启远程访问

bash 复制代码
sed -i 's/#listen_addresses = '\''localhost'\''/listen_addresses = '\''*'\''/' /var/lib/pgsql/15/data/postgresql.conf
echo "host    all             all             0.0.0.0/0               md5" >> /var/lib/pgsql/15/data/pg_hba.conf

3. 重启生效

bash 复制代码
systemctl restart postgresql-15

4. 开放 5432 端口

bash 复制代码
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload

七、SpringBoot 连接配置(application.yml)

yaml 复制代码
spring:
  datasource:
    url: jdbc:postgresql://你的地址:5432/zilu
    username: postgres
    password: password1234..
    driver-class-name: org.postgresql.Driver

八、最终连接测试

bash 复制代码
PGPASSWORD='password1234..' /usr/pgsql-15/bin/psql -U postgres -d zilu -h 127.0.0.1 -c 'SELECT 1;'

九、数据库信息汇总(可直接复制到文章)

项 内容
数据库版本 PostgreSQL 15.8
服务器IP
端口 5432
数据库名 zilu
用户名 postgres
密码 password1234...
备份文件路径 /var/lib/pgsql/backup_zilu_before_upgrade.dump

十、升级成功效果

  1. ✅ 数据完整无损(备份+恢复)
  2. ✅ 支持 CREATE INDEX IF NOT EXISTS
  3. ✅ 支持 CREATE TABLE IF NOT EXISTS
  4. ✅ SpringBoot 完美连接
  5. ✅ 远程连接正常
  6. ✅ 旧版本语法报错全部消失

相关推荐
一碗白开水一3 分钟前
Day 5 · 弹性 | 微观
java·前端·数据库
迪飞特科技4 分钟前
大模型接入业务系统:API、本地部署、RAG、智能体四种路线怎么选
java·数据库·人工智能·知识图谱·deepseek·本地化大模型
星轨zb7 分钟前
[专题5]支付发放物品的一致性保障:事务、幂等与状态流转
数据库·后端·mongodb·支付架构学习
保密资质顾问说13 分钟前
保密培训三大误区纠正:从形式主义到持续合规
数据库
泡海椒16 分钟前
JQuick-SQL GROUP BY 聚合:COUNT、SUM、AVG、MIN 与 MAX
数据库·sql
小冯不疯22 分钟前
销售订单同步实战:从聚水潭到金蝶云星空的线上出库单落地
大数据·数据库
qq_4017004133 分钟前
Qt 实时大数据量存储:自己动手实现 TDMS 读写
数据库·qt
Leon-Ning Liu1 小时前
Oracle参数对比脚本分享:对比 SPFILE 参数与内存参数差异,支持 11g 到 19c
数据库·oracle
涛思数据(TDengine)1 小时前
TDengine TSDB 3.4.3.3 上线:流计算分层闭环、虚拟表跨层引用,查询关联一次写完
数据库·人工智能·数据分析·时序数据库·tdengine·工业
远方16091 小时前
118-五大进程LGWR DBWn CKPT SMON PMON 与存储故障-文件系统对照
大数据·数据库·sql·oracle·database