PostgreSQL源码安装及配置(基于Pg13)

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

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

步骤概览

./configure
make
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - 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;

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

获取源码

从官网获取:PostgreSQL: File Browser

有两个类型的文件: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关闭数据库服务。

发布于 2021-09-03 13:11

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/database/237298.html

(0)
上一篇 2022年1月25日 21:43
下一篇 2022年1月25日 21:57

相关推荐

发表回复

登录后才能评论