IvorySQL 3.1 发版
先让我们来回一下时间线:
-
PostgreSQL 16
- 2023-09-14, PostgreSQL 16.0 Released
- 2023-11-09, PostgreSQL 16.1 Released
-
IvorySQL 3
- 2023-11-17, IvorySQL 3.0 Released
- 2024-01-26, IvorySQL 3.1 Released
再来看下 IvorySQL 3.2 的发版说明:
-
版本介绍
[发行日期:2024年1月26日]
IvorySQL 3.1 基于 PostgreSQL 16.1 ,包含来自 PostgreSQL 16.1 的各种修复。有关 PostgreSQL 16.1 中更详细的更新和错误修复,请参阅官方 PostgreSQL 16.1 发行说明 。
-
已知问题
暂无
-
增强功能
暂无
-
问题修复
暂无
-
源代码
IvorySQL主要包含2个代码仓库,数据库IvorySQL代码仓、IvorySQL网站仓:
IvorySQL代码仓: https://github.com/IvorySQL/IvorySQL
IvorySQL网站仓: https://github.com/IvorySQL/Ivory-www -
贡献人员
以下个人作为补丁作者、提交者、审阅者、测试者或问题报告者为本版本做出了贡献。
- Grant Zhou
- 矫顺田
- 牛世继
- 梁翔宇
- 高雪玉
- Cary Huang
- David Zhang
- 谭洋
- 王杰
- 穆帅楠
- 张洪源
- 王守波
- 任娇
- 刘政
- 肖哲凯
- 金华建
- 王丽
- 尚雷
- 冯磊
- 宋金周
- Leo X.M. Zeng
- 严少安
- M.Imran Zaheer
- Yunhe Xu
- 王皓
- 董小姐
- 韩伟博
IvorySQL 3.1 编译安装
之前介绍过 IvorySQL 2.x/3.0 的编译安装,3.1 和 3.0 的步骤基本一致。
只是,这次的编译环境是在 Rocky Linux 9.3 上运行的 Rocky Linux 9.3 容器中。
[mysql@shawnyan ~]$ cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) [mysql@shawnyan ~]$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE shawnyan.cn/rl9-builder latest 9e887e48ed6c 4 hours ago 297 MB shawnyan.cn/rl9-systemd latest be8b85ec9c17 4 hours ago 205 MB docker.io/library/rockylinux 9.3 b72d2d915008 2 months ago 181 MB [mysql@shawnyan ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1547a08c6a1 shawnyan.cn/rl9-builder:latest /usr/lib/systemd/... 3 hours ago Up 3 hours shawnyan [mysql@shawnyan ~]$ podman exec -it shawnyan bash [root@shawnyan /]# [root@shawnyan /]# cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) [root@shawnyan /]# uname -a Linux shawnyan 5.14.0-362.13.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Dec 13 14:07:45 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux [root@shawnyan /]# gcc --version gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2) Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
复制
编译步骤也很简单,下面是主要步骤:
export IVORY_VERSION=3.1 wget https://github.com/IvorySQL/IvorySQL/archive/refs/tags/IvorySQL_$IVORY_VERSION.tar.gz tar zxf IvorySQL_$IVORY_VERSION.tar.gz cd IvorySQL-IvorySQL_$IVORY_VERSION ./configure --prefix=/opt/ivorysql-$IVORY_VERSION --with-extra-version="-ShawnYan" make && make install
复制
编译完成后,进行数据目录初始化:
initdb
复制
输出结果如下:
[root@shawnyan /]# cd /data/ivorysql-3.1/ [root@shawnyan ivorysql-3.1]# ls -al total 68 drwx------ 19 ivorysql ivorysql 4096 Feb 2 07:35 . drwxr-xr-x 4 ivorysql ivorysql 46 Feb 2 07:40 .. -rw------- 1 ivorysql ivorysql 3 Feb 2 07:17 PG_VERSION drwx------ 6 ivorysql ivorysql 46 Feb 2 07:17 base drwx------ 2 ivorysql ivorysql 4096 Feb 2 07:29 global -rw------- 1 ivorysql ivorysql 718 Feb 2 07:17 ivorysql.conf drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_commit_ts drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_dynshmem -rw------- 1 ivorysql ivorysql 5779 Feb 2 07:19 pg_hba.conf -rw------- 1 ivorysql ivorysql 2640 Feb 2 07:17 pg_ident.conf drwx------ 4 ivorysql ivorysql 68 Feb 2 07:35 pg_logical drwx------ 4 ivorysql ivorysql 36 Feb 2 07:17 pg_multixact drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_notify drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_replslot drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_serial drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_snapshots drwx------ 2 ivorysql ivorysql 25 Feb 2 07:35 pg_stat drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_stat_tmp drwx------ 2 ivorysql ivorysql 18 Feb 2 07:17 pg_subtrans drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_tblspc drwx------ 2 ivorysql ivorysql 6 Feb 2 07:17 pg_twophase drwx------ 3 ivorysql ivorysql 92 Feb 2 07:23 pg_wal drwx------ 2 ivorysql ivorysql 18 Feb 2 07:17 pg_xact -rw------- 1 ivorysql ivorysql 88 Feb 2 07:17 postgresql.auto.conf -rw------- 1 ivorysql ivorysql 29841 Feb 2 07:18 postgresql.conf -rw------- 1 ivorysql ivorysql 31 Feb 2 07:23 postmaster.opts [root@shawnyan ivorysql-3.1]#
复制
启动数据库:
[ivorysql@shawnyan ~]$ pg_ctl start waiting for server to start....2024-02-02 07:23:37.656 UTC [11422] LOG: starting PostgreSQL 16.1-ShawnYan (IvorySQL 3.1) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), 64-bit 2024-02-02 07:23:37.656 UTC [11422] LOG: listening on IPv4 address "0.0.0.0", port 5432 2024-02-02 07:23:37.656 UTC [11422] LOG: listening on IPv6 address "::", port 5432 2024-02-02 07:23:37.661 UTC [11422] LOG: listening on IPv6 address "::1", port 1521 2024-02-02 07:23:37.661 UTC [11422] LOG: listening on IPv4 address "127.0.0.1", port 1521 2024-02-02 07:23:37.661 UTC [11422] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2024-02-02 07:23:37.665 UTC [11422] LOG: listening on Unix socket "/tmp/.s.PGSQL.1521" 2024-02-02 07:23:37.676 UTC [11425] LOG: database system was shut down at 2024-02-02 07:23:30 UTC 2024-02-02 07:23:37.681 UTC [11422] LOG: database system is ready to accept connections done server started
复制
连接 IvorySQL 数据库:
[ivorysql@shawnyan ~]$ psql psql (16.1-ShawnYan) Type "help" for help. ivorysql=# \l List of databases Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges -----------+----------+----------+-----------------+---------+---------+------------+-----------+----------------------- ivorysql | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | postgres | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | template0 | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | =c/ivorysql + | | | | | | | | ivorysql=CTc/ivorysql template1 | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | =c/ivorysql + | | | | | | | | ivorysql=CTc/ivorysql (4 rows) ivorysql=# select version(); version ---------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 16.1-ShawnYan (IvorySQL 3.1) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), 64-bit (1 row) ivorysql=#
复制
惊喜的是,在 IvorySQL 3.0 中,已经被移除的 ivorysql
库又重新加回来了。
[ivorysql@shawnyan ivorysql-3.0]$ psql 2024-02-02 07:42:30.310 UTC [20979] FATAL: database "ivorysql" does not exist psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "ivorysql" does not exist [ivorysql@shawnyan ivorysql-3.0]$ createdb ivorysql [ivorysql@shawnyan ivorysql-3.0]$ psql psql (16.0-ShawnYan) Type "help" for help. ivorysql=# \l List of databases Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges -----------+----------+----------+-----------------+---------+---------+------------+-----------+----------------------- ivorysql | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | postgres | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | template0 | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | =c/ivorysql + | | | | | | | | ivorysql=CTc/ivorysql template1 | ivorysql | UTF8 | libc | C.UTF-8 | C.UTF-8 | | | =c/ivorysql + | | | | | | | | ivorysql=CTc/ivorysql (4 rows) ivorysql=#
复制
到此,IvorySQL 3.1 已安装完成,并顺利启动。
另外,需要注意的是,由于 IvorySQL 3 支持双端口策略,所以可以在 postgresql.conf
文件中配置 pg 模式的监听地址,以及在 ivorysql.conf
文件中配置 ora 模式的监听地址,默认为 localhost
,这里改为 *
监听所有地址。
[root@shawnyan ivorysql-3.1]# grep listen_addr postgresql.conf listen_addresses = '*' [root@shawnyan ivorysql-3.1]# grep listen_addr ivorysql.conf ivorysql.listen_addresses = '*'
复制
[ivorysql@shawnyan ~]$ ss -antpl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 200 0.0.0.0:5432 0.0.0.0:* users:(("postgres",pid=21040,fd=6)) LISTEN 0 200 0.0.0.0:1521 0.0.0.0:* users:(("postgres",pid=21040,fd=8)) LISTEN 0 200 [::]:5432 [::]:* users:(("postgres",pid=21040,fd=7)) LISTEN 0 200 [::]:1521 [::]:* users:(("postgres",pid=21040,fd=9)) [ivorysql@shawnyan ~]$
复制
OK, 简单做个小结,IvorySQL 3.1 是 IvorySQL 3.x 系列在 2024 年发布的第一个版本,支持 pg/ora 双模式双端口,合并了若干 PostgreSQL 16.1 中修复的问题,并将 IvorySQL 3.0 中移除的 ivorysql
库重新加回。