pgsql升级
关闭pgsql服务
systemctl stop postgresql
导出旧版数据库数据
su - postgres
mkdir -p /root/pg/pg_data_bak
cd /root/pg/pg_data_bak
pg_dumpall > outputfile
安装新版本数据库
安装完整步骤可参考之前文章
https://www.cnblogs.com/smallbo/p/12038819.html
因为我这边已经装过老版本的pgsql了,只需要替换二进制文件,初始化目录就可以了
遗憾的是从 10.20 之后linux就没有提供官方的二进制文件了,只能通过源安装。
地址 https://www.postgresql.org/download/
以centos7 为例
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql14-server
执行完毕后,可以看到,安装目录在
/usr/pgsql-14
清空当前的数据目录
rm -rf pg_data/*
用新版本pgsql重新初始化数据目录
su - postgres
/usr/pgsql-14/bin/initdb -D /root/pg/pg_data/
切换回root
exit
再修改 systemctl 文件
vim /etc/systemd/system/postgresql.service
更改为
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
ExecStart= /usr/pgsql-14/bin/pg_ctl -D /root/pg/pg_data/ start
ExecReload= /usr/pgsql-14/bin/pg_ctl -D /root/pg/pg_data/ restart
ExecStop= /usr/pgsql-14/bin/pg_ctl -D /root/pg/pg_data/ stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重载配置
systemctl daemon-reload
启动
systemctl start postgresql
用新版的pgsql还原数据库
su - postgres
/usr/pgsql-14/bin/psql -d postgres -f /root/pg//pg_data_bak/outputfile
---------------我是结束分割线--------------------
当数据导入完成后,postgresql整个的升级,和数据迁移就全部成功了。