pg大版本升级

一、升级计划

pg14.9 -> pg16.4

查看当前版本信息:

psql -V
pg_config
select version();

在这里插入图片描述

原来环境变量:

export PGHOME=/home/postgresql/pg14.9    #修改为--prefix设置的路径
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib$LD_LIBRARY_PATH
export PGDATA=/home/postgresql/pgdata  #本机原先存在的数据目录,根据实际情况替换
export PGPORT=5432
export PATH=$PGHOME/bin:$PATH:.

二、升级步骤

pg16.4版本安装包获取:https://www.postgresql.org/ftp/source/
在这里插入图片描述
在这里插入图片描述
下载完成之后上传安装包到服务器
在这里插入图片描述

1、安装目标版本数据库

在这里插入图片描述
上传完成之后发现权限是root,需要解压之后并更改权限

# root用户执行
cd /home/postgresql
chown -R postgres:postgresql /home/postgresql/postgresql-16.4.tar.bz2
# postgres用户执行
tar -xvf postgresql-16.4.tar.bz2

在这里插入图片描述

编译&安装:

# postgres用户执行
mkdir -p /home/postgresql/pg16.4
cd /home/postgresql/postgresql-16.4
# 编译
./configure --prefix=/home/postgresql/pg16.4 --with-libxml --without-readline --without-icu
# 安装
make && make install

编译过程报错缺少包
在这里插入图片描述

# root用户安装包之后再次执行,编辑以及安装操作
yum install libxml2 libxml2-devel

在这里插入图片描述
在这里插入图片描述

检查是否安装到目录pg16.4下
在这里插入图片描述
编译插件:

cd /home/postgresql/postgresql-16.4/contrib
make && make install

在这里插入图片描述
指定新的数据目录,记住只初始化数据库,不启动,确认好字符编码字符集
在这里插入图片描述

mkdir /home/postgresql/pgdata16
/home/postgresql/pg16.4/bin/initdb  -D /home/postgresql/pgdata16 -E UTF8 --locale=en_US.utf8 -U postgres

在这里插入图片描述

2、源库备份并关闭

pg_dumpall -U postgres -f /home/postgres/dumpall_data.sql
# 备份之后记得关闭源生产库
pg_ctl stop 

在这里插入图片描述

3、版本兼容性检查

# 检查新旧数据库版本兼容性,要确保所有选项都OK
cd /home/postgresql/pg16.4/bin/
./pg_upgrade --old-datadir /home/postgresql/pgdata --new-datadir /home/postgresql/pgdata16 --old-bindir /home/postgresql/pg14.9/bin/ --new-bindir /home/postgresql/pg16.4/bin/ --check

在这里插入图片描述
确保检查结果都是OK,如有异常,根据检查结果进行分析处理。

4、升级数据库

cd /home/postgresql/pg16.4/bin/
./pg_upgrade --old-datadir /home/postgresql/pgdata --new-datadir /home/postgresql/pgdata16 --old-bindir /home/postgresql/pg14.9/bin/ --new-bindir /home/postgresql/pg16.4/bin/

在这里插入图片描述
在这里插入图片描述
记住这里的两条命令,现在不执行后边会执行

# 不执行不执行
/home/postgresql/pg16.4/bin/vacuumdb --all --analyze-in-stages
/home/postgresql/pg16.4/bin/delete_old_cluster.sh

5、修改环境变量

vi .bash_profile

export PGHOME=/home/postgresql/pg16.4     #修改为--prefix设置的路径
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib$LD_LIBRARY_PATH
export PGDATA=/home/postgresql/pgdata16  #本机原先存在的数据目录,根据实际情况替换
export PGPORT=5432
export PATH=$PGHOME/bin:$PATH:.

更换参数文件及白名单
更换postgresql.config 、pg_hba.conf文件

mkdir /home/postgresql/pgdata16/pg_log

cat >> /home/postgresql/pgdata16/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
unix_socket_directories = '/tmp'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on   #日志循环
EOF

# pg_hba文件将原pgdata下的拷贝过来就行

在这里插入图片描述

三、升级后的收尾

1、检查升级效果

pg_ctl start
select version();

在这里插入图片描述

2、重新收集统计信息

# 这里是升级数据库那里没执行的命令
/home/postgresql/pg16.4/bin/vacuumdb --all --analyze-in-stages

在这里插入图片描述

3、删除源数据库的数据

/home/postgresql/pg16.4/bin/delete_old_cluster.sh

到此升级完成。检查一下数据库数据是否正常即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会编程的喵星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值