由于工作需要,打算开始看一下pg内核的代码,看了一下,截止到目前2022/9/6,pg正式版本已经更新到14了,15的beta版本已经出到了3。
本着学习的态度,打算从pg15的代码开始看,里面会有很多新特性,也能够理解更先进些的数据库内核的知识。
我是新开的腾讯云的云主机,使用的4核8g规模。
系统为centos8。
使用的cmake版本为3.18.6。

g++/gcc版本使用的是10.2.0。

从官网下载源码。
地址:
https://www.postgresql.org/ftp/source/
下载及解压命令:
- wget https://ftp.postgresql.org/pub/source/v15beta3/postgresql-15beta3.tar.gz
- tar zxvf postgresql-15beta3.tar.gz

创建pg用的用户,不然会报错,不能够创建实例。

- groupadd postgres
- useradd -d /home/postgres -m postgres -g postgres
- passwd postgres
- # 这里需要设置密码,我使用的是12345678
使用su postgres来切换用户。
查看一下官方文件INSTALL中也有介绍:

所以先使用root账户创建一下文件夹,然后赋权限给postgres用户。
这一步网上找不到合适的教程,坑了我很久。
命令:
- [root@VM-8-17-centos local]# mkdir -p /usr/local/pgsql/data
- [root@VM-8-17-centos local]# chown postgres:postgres /usr/local/pgsql
- [root@VM-8-17-centos local]# chown postgres:postgres /usr/local/pgsql/data

之后要用到的数据文件夹也可以放置在其他位置,不使用上面的data,比如我创建在了pgdata,也赋权限给postgres用户。

首先切换到刚刚创建的postgres用户。
su postgres
- # 进行环境依赖检查
- ./configure
-
- # 使用4个并发编译
- make -j4
-
- # 无误后进行安装
- make install
完成后,查看/usr/local/pgsql文件夹如下。

- # 此处使用绝对路径,也可用相对路径来操作。
- # -D:database cluster的主目录
- # -U:指定超级用户
- # -W:指定用户密码
- # -E:指定数据库字符编码
- # --waldir:指定wal日志路径
- /usr/local/pgsql/bin/initdb -D /data/pg/pgdata -U postgres -E utf8 --waldir=/data/pg/pgdata/pgwal
- # 最简化的方式初始化数据库
- /usr/local/pgsql/bin/initdb -D /data/pg/pgdata

[postgres@VM-8-17-centos pgdata]$ /usr/local/pgsql/bin/pg_ctl -D /data/pg/pgdata -l logfile start

查看端口号,可以看到postgresql已经在运行了

使用psql进行连接:
