暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

从pg15升级到pg16

5003 2024-12-24
457

实验目标:

从pg15升级到pg16,自行搭建环境

实验步骤:

查看当前版本为15,然后停止服务:

pg_ctl -V


检查15中已经存在的数据


查看原数据库编译时的参数,新安装的数据库也需要添加相应的参数,防止迁移失败

pg_config | grep CONFIGURE

CONFIGURE = '--prefix=/pgccc/pgserver' '--with-blocksize=32' '--with-openssl'


安装pg16依赖包

yum install -y libicu-devel

 

安装PG16:

tar -zxvf postgresql-16.4.tar.gz

cd postgresql-16.4

./configure --with-blocksize=32 --with-openssl

 

 

# 如果指定了pg16的安装地址,需要将后面/usr/local/pgsql地址替换为新的安装地址:

mkdir /pgccc/pgserver16

./configure  --prefix=/pgccc/pgserver16  --with-blocksize=32 --with-openssl

 

make && make install



创建数据目录

mkdir -p /pgccc/pgdata16

chown postgres.postgres /pgccc/pgdata16/


加权限,防止升级时报错

chmod -R 777 /usr/local/pgsql/


su - postgres

cd /usr/local/pgsql/bin/


# 查看版本是否为16

./pg_ctl -V

 

初始化16数据库

./initdb -D /pgccc/pgdata16/

 

启动并登录16,验证正常

./pg_ctl start -D /pgccc/pgdata16/


./psql 


 

先加上-c check一下,看看是否有报错:

./pg_upgrade -c -b /pgccc/pgserver/bin/ -B /usr/local/pgsql/bin/ -d /pgccc/pgdata/ -D /pgccc/pgdata16/ -j 4

 

如果以前的PG15实在安装了扩展,则需要在PG16上安装相应的扩展后再进行升级,否则会提示升级检查错误,如下错误信息:



安装自带扩展:

cd ~/postgresql-16.4/contrib/

make && make install

安装故障修改时装的扩展,如果原PG15不存在可不安装:

select * from pg_available_extensions where name like 'pg_dirtyread';

\dx

其中pg_dirtyread扩展需要在PG16上安装2.6版本:

cd /root/postgresql-15.8/contrib/

wget https://github.com/df7cb/pg_dirtyread/archive/refs/tags/2.6.tar.gz

tar -zxvf pg_dirtyread-2.6.tar.gz

chmod -R 777 pg_dirtyread-2.6

cd pg_dirtyread-2.6

vim Makefile # 修改路径

PG_CONFIG = /usr/local/pgsql/bin/pg_config

修改Makefile 

PG_CONFIG = /pgccc/pgserver/bin/pg_config

make

make install

./psql

create extension pg_dirtyread ;


停止16实例后进行数据升级:

./pg_ctl stop -D /pgccc/pgdata16/


./pg_upgrade -c -b /pgccc/pgserver/bin/ -B /usr/local/pgsql/bin/ -d /pgccc/pgdata/ -D /pgccc/pgdata16/ -j 4


升级成功


./pg_ctl start -D /pgccc/pgdata16/


检查升级是否正常

./psql


进行后续工作

./vacuumdb --all --analyze-in-stages


./delete_old_cluster.sh

修改变量

vim ~/.bash_profile

修改以下内容

export PGHOME=/usr/local/pgsql

export PGDATA=/pgccc/pgdata16

退出postgres用户后重新进入,即可默认使用16版本的相关工具了

最后,PG15升16完成

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论