postgresql 数据库版本升级 11.5升级14

Posted yang_z_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql 数据库版本升级 11.5升级14相关的知识,希望对你有一定的参考价值。

postgresql 数据库版本升级 11.5升级14

文章目录

前言

最近因为行情和国家政策,数据库频频进行等保评测和漏洞扫描,现在漏洞扫描出现一些问题,需要更新postgresql数据库的版本来修复问题,那pg数据库该如何升级呢?

一 漏洞详情


二 版本升级

因为数据库是线上库,数据量过大,在这里采用pg_upgrade的方法升级

1. pg_upgrade的用法

2.2 安装pg14

这次我是升级到pg14,安装步骤:
Centos7 安装 PostgreSql 14 数据库 和 timescaledb 时序库

  1. yum安装
    yum install postgresql14 –y
    yum install postgresql14-server -y
    注:如果旧版本装了插件,新版本也需要装相应的插件,但是不要执行CREATE EXTENSION命令,因为会从旧数据库中进行升级
  2. 创建安装目录
    使用yum安装后,会在系统中创建一个postgres的无密码用户。在主节点服务器切换到此用户,然后创建一个数据目录,该目录将存放所有的配置文件、数据库文件和日志文件。
    mkdir -p /u01/apps/pgsql14/data
    赋权:
    chown -R postgres:postgres /u01/apps/pgsql14/
  3. 初始化数据库
    PostgreSQL的安装目录默认存放在/usr/pgsql-14,使用下面的命令初始化数据库目录:
    使用postgres用户执行:录
    /usr/pgsql-14/bin/initdb -D 【数据目录全路径】
    su - postgres
    /usr/pgsql-14/bin/initdb -D /u01/apps/pgsql14/data

版本升级

  1. 关闭新旧数据库服务
    关闭新版本:
    systemctl stop postgresql-14
    关闭旧版本:
    systemctl stop postgresql-11

  2. 运用pg_upgrade命令升级
    通过 pg_upgrade 执行升级操作,使用数据库专用用户(通常是 postgres)执行以下操作:

[root@ bin]# su - postgres
上一次登录:三 9月 28 14:13:04 CST 2022pts/1 上
cd /usr/pgsql-14/bin
先检查一遍新旧数据库有啥区别

/usr/pgsql-14/bin/pg_upgrade
–old-datadir /u01/apps/pgsql/data/
–new-datadir /u01/apps/pgsql14/data/
–old-bindir /usr/pgsql-11/bin/
–new-bindir /usr/pgsql-14/bin/
–check

如果有区别他就会报错,

如果没有问题

过程如下

-bash-4.2$ /usr/pgsql-14/bin/pg_upgrade  --old-datadir /u01/apps/pgsql/data/  --new-datadir /u01/apps/pgsql14/data/  --old-bindir /usr/pgsql-11/bin/  --new-bindir /usr/pgsql-14/bin/  
正在执行一致性检查
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for system-defined composite types in user tables  ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for user-defined encoding conversions              ok
Checking for user-defined postfix operators                 ok
Checking for tables WITH OIDS                               ok
Checking for invalid "sql_identifier" user columns          ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                            ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok
Checking for new cluster tablespace directories             ok

如果pg_upgrade在这一点之后失败,在继续之前必须重新初始化新集群.

正在执行升级
------------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new pg_xact                             ok
Copying old pg_xact to new server                           ok
Setting oldest XID for new cluster                          ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new pg_multixact/offsets                ok
Copying old pg_multixact/offsets to new server              ok
Deleting files from new pg_multixact/members                ok
Copying old pg_multixact/members to new server              ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 ok
Restoring database schemas in the new cluster
                                                            ok
正在复制用户关系文件
                                                            ok
Setting next OID for new cluster                            ok
Sync data directory to disk                                 ok
Creating script to delete old cluster                       ok
Checking for extension updates                              notice

您的安装包含应使用
ALTER EXTENSION命令更新的扩展。 文件
    update_extensions.sql
当数据库超级用户通过psql执行时,
将更新这些扩展。


升级完成
----------------
优化器统计数据不会通过pg_upgrade传输。
启动新服务器后,考虑运行:
    /usr/pgsql-14/bin/vacuumdb --all --analyze-in-stages

运行此脚本将删除旧群集的数据文件:
    ./delete_old_cluster.sh
-bash-4.2$

这样就成功了

  1. 启动pg14

systemctl start postgresql-14

  1. 查看效果


select version();

🌈后记

如果本文章有何错误,请您评论中指出,或联系我,我会改正,如果您觉得这篇文章有用,请帮忙一键三连,让更多的人看见,谢谢
作者 yang_z_1 csdn博客地址: https://blog.csdn.net/yang_z_1?type=blog

以上是关于postgresql 数据库版本升级 11.5升级14的主要内容,如果未能解决你的问题,请参考以下文章

postgresql 数据库版本升级 11.5升级14

postgis版本升级

postgis版本升级

postgis版本升级

postgresql 数据库小版本更新

postgresql如何升级版本