- 首先下载pgsql14的源码包进行安装:
yum install postgresql14 –y
yum install postgresql14-server -y
附带安装
yum install postgresql14-libs
yum install postgresql14-contrib
yum install postgresql14-devel
注:如果旧版本装了插件,新版本也需要装相应的插件,但是不要执行CREATE EXTENSION命令,因为会从旧数据库中进行升级
- 创建数据目录
使用yum安装后,默认会安装在/usr/pgsql-14目录下。
并会在系统中创建一个postgres的无密码用户。
给postgres账户设置密码:passwd postgres
然后创建一个数据目录,该目录将存放所有的配置文件、数据库文件和日志文件:
mkdir -p /usr/pgsql-14/data
赋权:
chown -R postgres:postgres /usr/pgsql-14
- 初始化数据库
PostgreSQL的安装目录默认存放在/usr/pgsql-14,使用下面的命令初始化数据库目录:
使用postgres用户执行:su - postgres
/usr/pgsql-14/bin/initdb -D /usr/pgsql-14/data
- 版本升级
- 关闭新旧数据库服务
先按ctrl+D键退出postgres用户
关闭新版本:
systemctl stop postgresql-14
关闭旧版本:
systemctl stop postgresql-11
2.通过pg_upgrade命令升级
3.通过 pg_upgrade 执行升级操作,使用数据库专用用户(通常是 postgres)执行以下操作:
su - postgres
cd /usr/pgsql-14/bin
先检查一遍新旧数据库是否存在不兼容情况,若兼容则会全部显示ok如下图,如果有异常,会报错,执行脚本:
/usr/pgsql-14/bin/pg_upgrade --old-datadir /var/lib/pgsql/11/data/ --new-datadir /usr/pgsql-14/data/ --old-bindir /usr/pgsql-11/bin/ --new-bindir /usr/pgsql-14/bin/ --check
全部ok可执行升级:
/usr/pgsql-14/bin/pg_upgrade --old-datadir /var/lib/pgsql/11/data/ --new-datadir /usr/pgsql-14/data/ --old-bindir /usr/pgsql-11/bin/ --new-bindir /usr/pgsql-14/bin/
这样就升级成功了
- 启动新版本
- 先按ctrl+D键退出postgres用户
- 启动pg14
systemctl start postgresql-14
报错了
解决办法:
按照提示执行systemctl status postgresql-14.service
发现这个配置文件存在问题,使得pg无法正常
那么找到此文件/usr/lib/systemd/system/postgresql-14.service进行修改:
Environment=PGDATA=/usr/pgsql-14/data/(改为自己data目录地址)
修改后保存文件,并重新加载:systemctl daemon-reload
在/usr/pgsql-14/data目录下修改配置文件:
#修改postgresql.conf
1. listen_addresses = '*'
2. port = 5432
#修改pg_hba.conf
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 0.0.0.0/0 md5
重新启动:systemctl status postgresql-14.service
启动后验证版本:
升级或安装过程中或遇到其他错误,不要着急,遇到错误去一个个查找并解决问题,总会成功的。
附上一些坑会用到的操作:
centos7 安装postgresql11:centos7 安装postgresql11 - 简书
配置postgresql可参考:https://blog.csdn.net/gaokcl/article/details/95041127