Loading

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整个的升级,和数据迁移就全部成功了。

posted @ 2022-05-09 16:03  小博。  阅读(262)  评论(0编辑  收藏  举报