GreatSQL社区

搜索

reddey

PG 18beta1安装过程中的小插曲

reddey 已有 9 次阅读2025-6-1 14:54 |系统分类:运维实战


   上个周末在自己电脑上做实验时,当时有些累了。就打算放松一下大脑,偶尔看到了彭冲老师的公众号的技术文章,有一篇名为《PG 18beta1 真正的AIO来了 | 感慨&环境准备》。另外一位大佬德哥,最近在其公众号不断发布PG18新版本的技术特性。彭冲老师和德哥是PG数据库的大佬,在业界久负盛名。

  当时出于好奇,就在自己的实验机下载编译安装,本以为安装一个压缩包而已不会太难,却意外地失败了。失败的原因是,我换了CENTOS7系统、ORACLE LINUX 8.9系统、CENTOS STREAM 10均无法YUM安装liburing-devel。这个PRM包是编译安装PG18必须的,否则无法使用异步IO(简称AIO)的功能。

  如果说CENTOS 7由于版本太老,找不到liburing-devel包,这个我信。CENTOS STREAM 10这是最新的CENTOS系统,竟然YUM安装时也找不到。又仔细看了彭冲老师的文章,作者使用的操作系统是openEuler 22.03环境。我检查了一下自己的电脑,里面有openEuler 22.04的安装ISO,我想04比03版本更新一些,应该是有liburing-devel包吧,结果由于还是失败。无奈之下,我去官网下载最新的openEuler 22.03 ISO。

  在自己的VM实验机上,我分配80G磁盘,8G内存给虚拟机环境,接着开始了安装openEuler 22.03之路。由于我是最小化安装,安装过程持续了大约30分钟。安装操作系统后,界面如下所示

 [root@localhost ~]# cat /etc/os-release

NAME="openEuler"

VERSION="22.03 (LTS-SP4)"

ID="openEuler"

VERSION_ID="22.03"

PRETTY_NAME="openEuler 22.03 (LTS-SP4)"

ANSI_COLOR="0;31"

[root@localhost ~]# ldd --version

ldd (GNU libc) 2.34

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.

Written by Roland McGrath and Ulrich Drepper.

 [root@localhost ~]# uname -r

5.10.0-216.0.0.115.oe2203sp4.x86_64

AIO的主要功能参数:io_method

在18里AIO功能主要通过io_method参数控制,该参数有三种选项值:

io_method=sync

与17行为一致,读操作使用posix_fadvise() 系统调用进行预取。

io_method=worker

默认行为:使用io worker进程来实现AIO。

io_method = io_uring

基于os kernel 5.1及以上的内核实现。

我的操作系统内核版本是符合要求的。

这次yum install liburing-devel,确实可以安装liburing-devel包了。

接着按大佬的文章要求,创建好安装目录和数据目录,并且分配好属主和权限。

mkdir -p /opt/pg/18

mkdir -p /opt/pg/pgdata1800

chown postgres:postgres /opt/pg/18  /opt/pg/pgdata1800

chmod 700 /opt/pg/pgdata1800

./configure '--prefix=/opt/pg/18' '--without-icu'  '--with-liburing'

在编译过程中,系统第一次提示没有bison包,于是yum install -y bison。

第二次编译时,提醒没有flex包,于是yum install -y flex。

第三次编译时,提醒没有zlib包,于时yum install zlib-devel -y。

第四次编译时,系统没有报错缺少包,这次成功了。后面继续make && make install,这次确实成功编译安装了。初始化数据库,启动数据库,界面如下:

postgres=# select version();

                                      version

-------------------------------------------------------------------------------------

PostgreSQL 18beta1 on x86_64-pc-linux-gnu, compiled by gcc_old (GCC) 10.3.1, 64-bit

(1 row)

postgres=#  select setting from pg_config where name='CONFIGURE';

                                 setting

---------------------------------------------------------------------------

 '--prefix=/opt/pg/18' '--without-icu' '--with-liburing' '--without-zlib'

(1 row)

总结:作为PG数据库初学者,在搭建一些学习环境时,还是要多看看大佬的技术文章,特别是要关注文章中提醒的一些技术细节。遇到暂时无法解决的问题时,多向大佬请教,多到论坛发贴子,不要轻易放弃未解决的技术问题。


评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-6-3 05:10 , Processed in 0.015132 second(s), 9 queries , Redis On.
返回顶部