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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
PostgreSQL是一个非常流行的开源关系型数据库,如果你想升级到10版本以上,可以按照以下步骤进行: 1. 备份数据 在进行任何升级操作之前,务必先备份数据库数据。你可以使用pg_dump工具来备份数据,例如: ``` pg_dump mydatabase > mydatabase_backup.sql ``` 这会将mydatabase数据库备份到mydatabase_backup.sql文件中。请确保备份文件妥善保存。 2. 安装新版本 在升级之前,你需要先安装新版本的PostgreSQL数据库。你可以从官方网站下载最新版本的PostgreSQL。 在安装过程中,你需要选择升级已有的PostgreSQL数据库。如果你的系统中已经安装了旧版本的PostgreSQL,安装程序将会自动检测到它,并提供升级选项。 3. 升级数据库 安装完成后,你需要使用pg_upgrade工具来升级数据库。此工具会将旧版本的数据库升级到新版本。 具体升级步骤如下: - 停止PostgreSQL服务器 在升级之前,你需要停止PostgreSQL服务器。你可以使用以下命令停止服务器: ``` sudo systemctl stop postgresql ``` - 执行pg_upgrade 执行以下命令来运行pg_upgrade: ``` sudo pg_upgrade -b /usr/lib/postgresql/9.6/bin/ -B /usr/lib/postgresql/10/bin/ -d /var/lib/postgresql/9.6/main/ -D /var/lib/postgresql/10/main/ -o '-c config_file=/etc/postgresql/9.6/main/postgresql.conf' -O '-c config_file=/etc/postgresql/10/main/postgresql.conf' ``` 这个命令中包含了许多选项,其中: -b:指定旧版本的PostgreSQL二进制文件路径 -B:指定新版本的PostgreSQL二进制文件路径 -d:指定旧版本的数据目录路径 -D:指定新版本的数据目录路径 -o:用于指定旧版本的postgresql.conf配置文件路径 -O:用于指定新版本的postgresql.conf配置文件路径 - 重启PostgreSQL服务器 升级完成后,你需要启动新版本的PostgreSQL服务器。你可以使用以下命令启动服务器: ``` sudo systemctl start postgresql ``` 4. 检查升级结果 升级完成后,你需要检查数据库是否正常运行。你可以使用以下命令来连接到数据库: ``` psql mydatabase ``` 然后输入数据库密码即可。如果一切正常,你应该能够看到连接成功的提示信息。 在连接到数据库后,你可以执行一些SQL语句来检查数据库是否正常。例如: ``` SELECT version(); ``` 这个命令应该返回新版本的PostgreSQL数据库信息。如果一切正常,恭喜你已成功将PostgreSQL数据库升级到10版本以上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yang_z_1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值