树莓派4b中postgresql15升级16遇到的一些问题及解决办法

前因

树莓派中安装的是postgresql15,再一次更新后莫名升级到了postgresql16,于是系统进程中出现了两个版本的进程,对于我这样的洁癖狂来说无法忍受,于是安装官方例程升级数据库文件,结果多次出错,当时放弃,后终于浪费一下午时间搞定,记录下来,防止下次更新忘记.

一.停止postgresql服务
$ sudo systemctl stop postgresql.service

这一条命令会同时停止两个版本的服务.

二.更新数据库
  1. 使用postgres用户登陆

    $ sudo su postgres 
    
  2. 切换到/tmp目录

    $ cd tmp/
    

这里我出现第一个关于权限的错误,因为我没有切换目录,用的是/home目录,出现错误的第一时间我是在/home/pi目录下建立了一个具有postgres:postgres权限的目录,在这个目录下面运行pg_upgrade命令,结果是出现更多的关于权限的错误,猜测大概在升级运行命令过程中生成了各种文件权限造成的,最后在根目录下面创建了一个具有postgres权限的目录解决
在这里插入图片描述

  1. 运行带–check参数的命令check一下

    $ /usr/lib/postgresql/16/bin/pg_upgrade 
    --old-datadir=/var/lib/postgresql/15/main 
    --new-datadir=/var/lib/postgresql/16/main  
    --old-bindir=/usr/lib/postgresql/15/bin  
    --new-bindir=/usr/lib/postgresql/16/bin  
    --old-options '-c config_file=/etc/postgresql/15/main/postgresql.conf' 
    --new-options '-c config_file=/etc/postgresql/16/main/postgresql.conf' 
    --check
    

    这个时候又出现一个错误在这里插入图片描述

    多方Google以后知道我设置了postgres用户的密码,但是在切换用户的时候没有输入postgres的密码,解决办法是设置密码变量,结果如下在这里插入图片描述

  2. 去掉–check参数运行,官方还有别的–link参数几个,感觉默认就行了.运行后退出postgres用户.

    exit
    
  3. 修改版本15和16的配置文件,调换端口.我的没有更换端口的出错图示在这里插入图片描述

    $ sudo vim /etc/postgresql/16/main/postgresql.conf
    $ port = 5433 # 改成5432
    $ sudo vim /etc/postgresql/15/main/postgresql.conf
    $ port = 5432 # 改成5433
    
  4. 启动postgresql服务,切换postgres用户查看当前运行的版本

    $ sudo systemctl start postgresql.service
    $ sudo su postgres
    $ psql -c "SELECT version();"
    

    在这里插入图片描述

三.运行优化程序删除老版本
  1. 运行vacuumdb优化更新后的数据库,

    $ /usr/lib/postgresql/16/bin/vacuumdb --all --analyze-in-stages
    

这一步没有发现错误在这里插入图片描述

  1. 清理旧的数据集文件

    $ ./delete_old_cluster.sh
    $ sudo rm -rf /etc/postgresql/15/main
    

    清理的.sh文件应该是生成的,整个运行目录都在那个具有postgres用户权限的目录下.运行完毕后就可以卸载老版本了.那些版本15的配置文件不会卸载,建议保留,因为还有后续.

四.后续

升级完成后会发现无法通过局域网访问数据库,一直鼓捣了半天ufw,后来chatgpt后才知道大版本升级配置文件不会升级,于是那些保留的版本15的配置文件就派上用场了,我大概对比了一下,配置参数好像没有大的变动,应该可以覆盖来修改的,由于我的只要修改两处,没有使用覆盖这种简单粗暴的办法在这里插入图片描述

  1. 修改postgresql.conf

    $ sudo vim /etc/postgresql/16/main/postgresql.conf
    

    在这里插入图片描述

  2. 修改pg_hba.conf

    $ sudo vim /etc/postgresql/16/main/pg_hba.conf
    

    在这里插入图片描述

另外发现的问题是使用 systemctl reload postgresql发现配置文件文件无法生效,只有使用restart才行.莫名其妙

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值