安装并配置PostgreSQL源码(基于Pg13版本)

发表时间: 2021-09-03 13:36

作者:李明


毫无疑问,在使用PostgreSQL之前,首先要安装它。

本文介绍以源码方式在RHEL7.3下的PostgreSQL13.4安装。


步骤概览


./configuremakemake installadduser postgresmkdir /usr/local/pgsql/datachown postgres /usr/local/pgsql/datasu - postgres/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start/usr/local/pgsql/bin/createdb test/usr/local/pgsql/bin/pgsql test


详细步骤


要求


一般的Linux操作系统环境,足以运行PostgreSQL。


安装PostgreSQL,需要以下软件包:


  1. GUN make 3.80及以上版本(不可使用其他make或旧的GUN make)。查看GUN make版本:make --version
  2. C编译器。GCC即可。
  3. tar及gzip或bzip2:用以解压源码;
  4. 默认使用GUN Readline库:该库允许psql(PostgreSQL的)记录SQL命令,并可以使用上下键选择及编辑之前使用的命令。建议使用该软件,但如果不想使用,可以在configure的时候,指定--without-readline;
  5. 默认使用zlib压缩库。如果不想使用,则可以在configure的时候,指定--without-zlib(使用该选项会禁用在使用pg_dump和pg_restore时的归档压缩);


以下为可选安装包。默认安装PostgreSQL用不到这些包,但是在需要特定功能的时候,就需要安装这些软件包:


  1. 若需使用PL/Perl进行数据库存过程等编程,则需要安装Perl(含libperl库及其头文件),版本最低为Perl3.8.5;查看Perl版本:perl -V;
  2. 若需使用PL/Python进行数据库存过程等编程,则需要安装Python(含头文件及distutils模块)。版本最低为2.6;
  3. 若需使用PL/Tcl进行数据库存过程等编程,则需要安装Tcl。版本最低为8.4;
  4. 如果要启用本地语言支持(NLS:Native Language Support),需要gettext;
  5. 如果需要加密客户端连接,则需要OpenSSL。版本最低为OpenSSL 1.0.1;


磁盘空间需求:当前环境,普普通通足以满足空间需求。


获取源码


从官网获取:
https://www.postgresql.org/ftp/source/v13.4/

有两个类型的文件:postgresql-13.4.tar.bz2和postgresql-13.4.tar.gz


解压文件:

tar -xvf postgresql-13.4.tar.gz或者tar -jxvf postgresql-13.4.tar.bz2


解压完成后,生成:

postgresql-13.4 #源码路径


安装


依赖包安装


配置yum源,然后安装相关依赖包:

yum install -y gcc *xml2* *readline*dev* *zlib* *perl*dev* *python*dev* bison flexs


configuration配置


如果只进行默认配置,可直接在源码解压路径下(postgresql-13.4)运行命令:./configure

默认配置会安装仅使用C编译器的服务端和其他程序、客户端接口等。

默认会安装到/usr/local/pgsql路径下。#数据库软件安装路径

如果需要重新进行configure,则建议首先执行以下: make distclean #该命令重置源码树至初始状态


常用./configure选项:


--prefix=PREFIX

将所有文件放置到PREFIX指定的路径下(而非默认的/usr/local/pgsql)。


--enable-nls[=LANGUAGES]

启用本地语言支持(NLS)。若不指定LANGUAGE,则会安装所有可用的语言。

需要Gettext API。


--with-perl

创建PL/Perl服务端语言。


--with-python

创建PL/Python服务端语言。


--with-openssl

支持SSL(加密)连接。需要安装OpenSSL。


--with-pgport=NUMBER

为客户端及服务端设置默认端口号。默认为5432。

也可以在此阶段设置块大小、WAL块大小及段大小。


build构建


开始build


make

如果想同时安装文档以及其他的模块,则使用make world


安装PostgreSQL


make install

将相关数据库文件安装到./configure中指定的路径下,默认为/usr/local/pgsql。

该安装会同时安装客户端和服务端相关程序。

如果想同时安装文档以及其他的模块,则使用make install-world


仅安装客户端程序及接口库


make -C src/bin install

make -C src/include install

make -C src/interfaces install

make -C doc install


卸载PostgreSQL


make uninstall

如果需要重新进行configure,则建议首先执行以下: make distclean #该命令重置源码树至初始状态


数据库服务配置


创建数据库的操作系统用户


useradd postgres --用户名可自定义

passwd postgres


创建数据库群集


创建自定义数据库路径:

mkdir /postgres

chown postgres /postgres


切换到postgres用户下,创建数据目录:


su - postgres

mkdir /postgres/data


初始化数据库:



/usr/local/pgsql/bin/initdb -D /postgres/data #可以设置PGDATA环境变量,替代-D选项或pg_ctl -D /postgres/data initdb

此命令默认创建一个没有密码的数据库超级用户postgres(与执行该命令的操作系统用户名相同)。若需为该默认数据库超级用户指定密码,则可在initdb时指定W选项。


启动数据库:



/usr/local/pgsql/bin/postgres -D /postgres/data >logfile 2>&1 &或
/usr/local/pgsql/bin/pg_ctl start -D /postgres/data -l logfile


安装完成后的配置


环境变量配置


在数据库安装用户postgres下,配置数据目录(-D选项)以及可执行文件路径、共享库路径:vi ~/.bash_profile


添加:

export PGDATA=/postgres/data

export PATH=/usr/local/pgsql/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/pgsql/lib


使配置生效:source ~/.bash_profile


数据库服务开机自启动配置


vi /etc/rc.d/rc.local添加:su - postgres -c 'pg_ctl start -D /postgres/data -l logfile'为该文件添加执行权限chmod +x /etc/rc.d/rc.local


客户端连接配置


数据库服务启动后,默认异机客户端无法连接,需对配置文件postgresql.conf和pg_hba.conf文件进行配置:vi $PGDATA/postgresql.conf

将其中的参数:#listen_addresses = 'localhost' 改为 listen_addresses = '*' #需重启数据库服务


vi $PGDATA/pg_hba.conf将其中的IP限制修改为host all all 0.0.0.0/0 trust #需执行pg_ctl reload

#可以指定某一IP或某一网段IP;认证方式可以为trust、reject、md5、password、scram-sha-256、gss、sspi、dent'、peer、pam、ldap、radius、cert


关闭数据库服务


关闭数据库服务有三种模式:


  1. SIGTERM,smart shutdown:阻止新连接,保持现有连接,仅当所有会话退出后才会关闭;
  2. SIGINT,fast shutdown:阻止新连接,中断事务,断掉会话;
  3. SIGQUIT,immediate shutdown:断电;


可使用命令pg_ctl stop -m smart|fast|immediate关闭数据库服务。