+-
CentOS 8 源码编译安装PostgreSQL(13.1)

CentOS 8 源码编译安装PostgreSQL(13.1)

注意:以下所有命令无特殊说明均在root下执行

一、安装前准备

1、操作系统需安装开发工具相关程序,如GCC,Make等,本例采用组安装包的方式进行安装: "Development Tools" 或 "开发工具"

dnf -y groupinstall "Development Tools"

2、在默认情况下一般要使用数据库中的压缩功能,而这一功能的实现需要第三方的zlib压缩开发包支持,所以需要安装 zlib-devel 包;为了方便地在psql中使用上下方向键把历史命令找出来,按照PostgreSQL官方手册的说明,需要安装readline-devel包。

dnf -y install zlib-devel readline-devel perl-devel perl-ExtUtils-Embed python3-devel

二、下载源码

wget https://ftp.postgresql.org/pub/source/v13.1/postgresql-13.1.tar.bz2

三、编译及安装

1、解压源码

tar -jxvf postgresql-13.1.tar.bz2

2、进入源码目录

cd postgresql-13.1

3、创建PostgreSQL安装目录

mkdir -p /vdisk/app/postgresql/pgsql/v13.1

4、运行configure

./configure --prefix=/vdisk/app/postgresql/pgsql/v13.1 --with-perl --with-python

参数说明:
(1)--prefix 指定数据库程序安装位置。
(2)--with-perl 加上该选项才能使用Perl语法的PL/Perl过程语言来编写自定义函数。
(3)--with-python 加上该选项才能使用Python语法的PL/Python过程语言来编写自定义函数。
5、编译

make

6、安装

make install

7、安装常用工具

cd contrib
make
make install

7、为方便后续数据库管理程序版本升级,建立默认数据库管理程序链接,以后有新的版本发布,通过源码编译安装后,修改这个软链接的实际指向即可完成升级,其他配置不需要做修改。


ln -sf /vdisk/app/postgresql/pgsql/v13.1 /vdisk/app/postgresql/pgsql/default 

四、添加用户(postgres)

# 1 添加用户
useradd postgres
# 2 设置密码
passwd postgres
# 3 创建相关目录
mkdir -p /vdisk/app/postgresql/pgdata
# 4 更改目录宿主
chown -R postgres:postgres /vdisk/app/postgresql/pgdata

五、配置环境变量

# 1 切换至 postgres 用户
su - postgres
# 2 配置 .bashrc 在末尾添加如下内容
export PGBASE=/vdisk/app/postgresql
export PGHOME=$PGBASE/pgsql/default
export PGDATA=$PGBASE/pgdata
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export MANPATH=$PGHOME/share/man:$MANPATH
# 3 让配置生效
source ~/.bashrc

六、初始化数据库实例

# 切换至 postgres 用户
initdb

七、数据库实例的启动及停止

# 切换至 postgres 用户
# 1 启动数据库
pg_ctl start 
# 2 停止数据库
pg_ctl stop [-m SHUTDOWN-MODE]
# -m 用于指定数据库的停止方法,有以下3种模式:
# smart : 等所有连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
# fast : 快速关闭数据库,断开客户端的连接,记已有的事务回滚,然后正常关闭数据库。
# immediate : 立即关闭数据库,相当于数据库进程立即停止,直接退出,下次启动数据库需要进行恢复。

八、测试

# 切换至 postgres 用户
# 1 使用 psql 命令行工具连接数据库
psql
# 输出如下:
psql (13.1)
Type "help" for help.

postgres=#

# 2 查看数据库信息,命令行输入 \l 回车
postgres=# \l
# 输出如下:
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres=#