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

从 IvorySQL 4.0 升级到 IvorySQL 4.2

原创 严少安 2025-01-15
80

ivory4.2.png

前情回顾

前文 从 PostgreSQL 升级至 IvorySQL 4.0 介绍了如何从 PG 12 升级到 IvorySQL 4,以及跨大版本升级的注意事项。本文将演示如何从 IvorySQL 4.0 升级到 IvorySQL 4.2。

IvorySQL 是基于 PostgreSQL 的开源数据库,在 PostgreSQL 17.1 这个小版本中出现了扩展兼容性问题,在 17.1 发布一周后紧急发布了 17.2 小版本。所以,IvorySQL 跳过 4.1 版本,于 2025 年 1 月 13 日发布了 IvorySQL 4.2,IvorySQL 4.2 包含了 PostgreSQL 17.1 和 17.2 的变更,并修复了 IvorySQL 4.0 的三个小问题。

插播新闻:PostgreSQL 喜提五冠王

DB-Engines 宣布 PostgreSQL 成为 2024 年度最佳 DBMS。

图片.png

消息来源:https://db-engines.com/en/blog_post/109

2025 年一定要学好 PostgreSQL。

图片.png

IvorySQL 4.2 版本概览

从 IvorySQL 4.0 升级到 IvorySQL 4.2,我们需要先关注功能增强和问题修复。

需要注意的是,如果你曾经从具有对另一个分区表的外键引用的分区表中分离分区,并且没有删除前一个分区,那么你可能需要修复目录或数据损坏。此外,在数据库的 LC_CTYPE 设置为 C 而其 LC_COLLATE 设置为其他语言环境的罕见情况下,应该重新索引文本列上的索引。

增强功能及问题修复

PostgreSQL 17.1 (2024-11-14)

  1. 确保在行级安全性 (RLS) 适用于非顶层表引用时,将缓存的计划标记为依赖于调用角色。(CVE-2024-10976)
  2. 使 libpq 丢弃在 SSL 或 GSS 协议协商期间接收到的错误消息。(CVE-2024-10977)
  3. 修复 SET SESSION AUTHORIZATIONSET ROLE 之间的非预期交互。(CVE-2024-10978)
  4. 防止受信任的 PL/Perl 代码更改环境变量。(CVE-2024-10979)
  5. 修复在附加或分离表分区时,外键约束的目录状态更新问题。

用于识别损坏的约束并构建重新创建它们所需的语句:

SELECT conrelid::pg_catalog.regclass AS "constrained table",
       conname AS constraint,
       confrelid::pg_catalog.regclass AS "references",
       pg_catalog.format('ALTER TABLE %s DROP CONSTRAINT %I;',
                         conrelid::pg_catalog.regclass, conname) AS "drop",
       pg_catalog.format('ALTER TABLE %s ADD CONSTRAINT %I %s;',
                         conrelid::pg_catalog.regclass, conname,
                         pg_catalog.pg_get_constraintdef(oid)) AS "add"
FROM pg_catalog.pg_constraint c
WHERE contype = 'f' AND conparentid = 0 AND
   (SELECT count(*) FROM pg_catalog.pg_constraint c2
    WHERE c2.conparentid = c.oid) <>
   (SELECT count(*) FROM pg_catalog.pg_inherits i
    WHERE (i.inhparent = c.conrelid OR i.inhparent = c.confrelid) AND
      EXISTS (SELECT 1 FROM pg_catalog.pg_partitioned_table
              WHERE partrelid = i.inhparent));
复制

更多细节,请参阅 PostgreSQL 发布说明 https://www.postgresql.org/docs/release/17.1/

PostgreSQL 17.2 (2024-11-21)

  1. 修复与结构体 ResultRelInfo 一起工作的扩展的 ABI 兼容性问题。
  2. 恢复 ALTER {ROLE|DATABASE} SET role 的功能。
  3. 修复逻辑复制槽的 restart_lsn 可能倒退的情况。
  4. 避免在执行 pg_rewind 时删除仍然需要的 WAL 文件。
  5. 修复与删除共享统计信息条目相关的竞态条件问题。

更多细节,请参阅 PostgreSQL 发布说明 https://www.postgresql.org/docs/release/17.2/

IvorySQL 4.2

  1. 修复 pg_upgrade 的问题: #721
  2. 提供 Rocky9 安装包: #724
  3. 修复 IvorySQL 文档中的英文语法错误: #95

升级 IvorySQL

IvorySQL 4.x 小版本升级不需要导出、导入数据,也可以不使用 pg_upgrade 工具,直接安装新二进制包即可。不过在升级之前,你需要确认已经阅读上述内容。

查看当前运行的 IvorySQL 版本。

[ivorysql@rl9 ~]$ psql -c 'select version()'
                                                         version
-------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 17.0 (IvorySQL 4.0) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-2), 64-bit
(1 row)
复制

下载 IvorySQL 4.2 安装包,并上传到服务器。

[shawnyan@rl9 ivorysql42]$ ll -h
total 53M
-rw-r--r-- 1 shawnyan shawnyan 3.1M Jan 15 20:38 ivorysql4-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 4.9M Jan 15 20:38 ivorysql4-contrib-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 6.5M Jan 15 20:38 ivorysql4-devel-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 1.9M Jan 15 20:38 ivorysql4-docs-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 1.5M Jan 15 20:38 ivorysql4-libs-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan  11M Jan 15 20:38 ivorysql4-llvmjit-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 235K Jan 15 20:38 ivorysql4-plperl-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 266K Jan 15 20:38 ivorysql4-plpython3-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan 122K Jan 15 20:38 ivorysql4-pltcl-4.2-1.rhel9.x86_64.rpm
-rw-r--r-- 1 shawnyan shawnyan  25M Jan 15 20:38 ivorysql4-server-4.2-1.rhel9.x86_64.rpm
复制

使用 dnf 命令升级 IvorySQL 数据库。

[shawnyan@rl9 ivorysql42]$ sudo dnf upgrade ./ivorysql4-*
Last metadata expiration check: 0:15:38 ago on Wed 15 Jan 2025 08:29:53 PM CST.
Dependencies resolved.
===============================================================================================
 Package                      Architecture    Version              Repository             Size
===============================================================================================
Upgrading:
 ivorysql4                    x86_64          4.2-1.rhel9          @commandline          3.1 M
 ivorysql4-contrib            x86_64          4.2-1.rhel9          @commandline          4.9 M
 ivorysql4-devel              x86_64          4.2-1.rhel9          @commandline          6.5 M
 ivorysql4-docs               x86_64          4.2-1.rhel9          @commandline          1.9 M
 ivorysql4-libs               x86_64          4.2-1.rhel9          @commandline          1.5 M
 ivorysql4-llvmjit            x86_64          4.2-1.rhel9          @commandline           11 M
 ivorysql4-plperl             x86_64          4.2-1.rhel9          @commandline          234 k
 ivorysql4-plpython3          x86_64          4.2-1.rhel9          @commandline          266 k
 ivorysql4-pltcl              x86_64          4.2-1.rhel9          @commandline          121 k
 ivorysql4-server             x86_64          4.2-1.rhel9          @commandline           24 M

Transaction Summary
===============================================================================================
Upgrade  10 Packages
...
Upgraded:
  ivorysql4-4.2-1.rhel9.x86_64                 ivorysql4-contrib-4.2-1.rhel9.x86_64
  ivorysql4-devel-4.2-1.rhel9.x86_64           ivorysql4-docs-4.2-1.rhel9.x86_64
  ivorysql4-libs-4.2-1.rhel9.x86_64            ivorysql4-llvmjit-4.2-1.rhel9.x86_64
  ivorysql4-plperl-4.2-1.rhel9.x86_64          ivorysql4-plpython3-4.2-1.rhel9.x86_64
  ivorysql4-pltcl-4.2-1.rhel9.x86_64           ivorysql4-server-4.2-1.rhel9.x86_64

Complete!
复制

注意:升级时,将覆盖 .bash_profile 文件,如果该文件中包含自定义内容,建议升级前先备份该文件。

拉起 IvorySQL 数据库,检查确认版本为 IvorySQL 4.2。

[ivorysql@rl9 ~]$ psql -c 'select version()'
                                                         version
-------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 17.2 (IvorySQL 4.2) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-2), 64-bit
(1 row)
复制

检查测试表、数据,确认正常。

到此,IvorySQL 升级完成。

这里还有一个小插曲,其实 IvorySQL 项目提供了 YUM 仓库,这两天不太稳定,但从 GitHub 下载安装包又不是非常方便,建议增加其他渠道的镜像,便于推广使用。

Have a nice day ~


🌻 往期精彩 ▼

– / END / –

👉 这里可以找到我

👉 这里有得聊

如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

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

文章被以下合辑收录

评论