400-090-9964


博客 | 论坛

教学文章

PostgreSQL安装教程 :linux系统环境下安装PostgreSQL

时间:2020-03-25 来源:

在Linux安装PostgreSQL主要有三种:

1.二进制安装包安装

2.通过yum源安装

3.通过源码编译安装

安装前系统依赖包,以RedHat/CentOS为例:

最小依赖:gcc、gcc-c++、zlib-devel、readline-devel

其他依赖:perl-ExtUtils-Embed、pam-devel、libxml2-devel、libxslt-devel、openldap-devel、python-devel、openssl-devel、cmake

依赖包可通过配置本地yum源或网络yum源的方式快速安装

安装介质获取方式:

RedHat:https://www.postgresql.org/download/linux/redhat/

不同的安装方式适用于不同的场景,自主学习推荐使用源码安装,可以按照需求自定义安装选项,譬如安装目录,块大小等。

源码安装PG,由3个步骤组成:

1.配置(configure)

2.编译(make或 gmake)

3.安装(make install或 gmake insta

备注:configure是一个可执行的脚本文件,命令./configure --help可以输出详细的选项列表

主要选项说明:

prefix:指定安装路径

with-openssl:对openssl进行扩展支持

with-python:对python进行扩展支持

with-perl: 对perl进行扩展支持

with-libxml: 对xml进行扩展支持

安装完成PostgreSQL后,需要执行initdb(初始化)操作,才能启动服务、创建数据库及表对象等操作。

初始化主要工作是创建cluster(数据库集簇),可理解为Oracle的实例,cluster是一个包含所有数据文件、配置文件的“data”目录,一台物理服务器上可以有多个cluster,主要通过以下内容进行区分:

data路径

port端口号

源码编译安装的数据库,需要initdb命令手动初始化该data目录,常用参数如下:

-D:data目录的路径

-U:数据库超级用户名

-E:配置区域语言、字符集

源码编译安装后如何卸载?

一般的,清除安装目录,再次安装可以尝试重新指定路径(安装时指定安装目录)

在安装的时候加 prefix ,不然的话虽然用find命令可以找出一些相关文件,但是对于修改了配置,比如加入启动项之类的操作就不好根除

通常只能用find去手动清除。所以软件通常都会提供uninstall的程序来执行卸载操作。

示例:源码安装PG V10.3

1. 源码包下载 https://www.postgresql.org/ftp/source/

2. 源码目录简介

[postgres@localhost postgresql-10.3]$ ll

total 668

-rw-r--r-- 1 postgres postgres 457 Nov 7 08:46 aclocal.m4

drwxrwxr-x 2 postgres postgres 4096 Nov 7 08:49 config

-rwxr-xr-x 1 postgres postgres 495587 Nov 7 08:46 configure 源码安装的配置脚本

-rw-r--r-- 1 postgres postgres 76386 Nov 7 08:46 configure.in

drwxrwxr-x 55 postgres postgres 4096 Nov 7 08:49 contrib 已打包到PG源码中的第三方贡献的插件源码

-rw-r--r-- 1 postgres postgres 1192 Nov 7 08:46 COPYRIGHT

drwxrwxr-x 3 postgres postgres 101 Nov 7 08:49 doc 文档

-rw-r--r-- 1 postgres postgres 3638 Nov 7 08:46 GNUmakefile.in

-rw-r--r-- 1 postgres postgres 284 Nov 7 08:46 HISTORY 版本变更的历史记录

-rw-r--r-- 1 postgres postgres 71584 Nov 7 08:52 INSTALL 安装说明

-rw-r--r-- 1 postgres postgres 1529 Nov 7 08:46 Makefile

-rw-r--r-- 1 postgres postgres 1212 Nov 7 08:46 README

drwxrwxr-x 16 postgres postgres 4096 Nov 7 08:52 src 源代码

3. 配置

1./configure --prefix=/usr/local/pgl103 --with-pgport=1922 --with-openssl --with-perl --with-tcl --with-python --with-pam --without-ldap --with-libxml --with-libxslt --enable-thread-safety --with-wal-blocksize=16 --with-blocksize=8 --enable-dtrace --enable-debug

注意:

--with-blocksize

如果数据库需要经常做插入的操作,数据量增长非常快,尽量把此参数设大一点;

经常做小数据查询、更新且内存不是非常大的时候可以设小一点,默认8K即可。

生产环境不要加--enable-dtrace --enable-debug。

4. 编译

gmake world #gmake包括第三方插件全部编译

gmake check-world #这个需要使用普通用户执行,可选,耗时较长

5. 安装

1gmake install-world #包括第三方插件全部安装

注意:

如果遇到依赖的动态库缺失,需要提前安装即可

gmake world安装包含了文档,所有的contirb

6. 创建系统用户postgres及用户环境配置

配置用户环境是为了更便捷的进行服务端管理数据库实例

useradd postgres

su - postgres

vi ~/.bashrc(bash_profile)

#add

export PGPORT=1922

export PG_HOME=/usr/local/pgl103

export PATH=$PG_HOME/bin:$PATH

export PGDATA=$PG_HOME/data

export LD_LIBRARY_PATH=$PG_HOME/lib

export.utf8

source ~/.bashrc

备注:.bashrc与 .bash_profile的区别

.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。

.bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。

这样可有效分离登录和子shell所需的环境。但一般 来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境。

7. 初始化

1initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W

注意:

加-W参数会提示输入数据库的超级用户的密码,默认情况下密码为空。

8. 启动数据库前修改配置文件,主要是允许客户端的连接,服务器端访问测试可以不用配置。

pg_hba.conf用于配置控制访问数据库的来源

postgresql.conf是数据库的主配置文件,最好也调整一下Linux内核参数

pg_hba.conf配置示例

# TYPE DATABASE USER ADDRESS METHOD

local all all trust # 服务端本地用户可信登录

host replication replica 0.0.0.0/0 md5 # 流复制用户密码验证登录

host all postgres 0.0.0.0/0 reject # 拒绝超级用户从网络登录

host all all 0.0.0.0/0 md5 # 其它用户密码验证登陆(不安全)

postgresql.conf客户端连接配置示例,其它参数暂且不管

listen_addresses = '*'

max_connections = 100

9.源码安装基本完成,可以使用pg_ctl 命令尝试控制集群服务了,pg cluster服务启停方式请参见相关文章说明,暂且到此。

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright 2017 ALL Rights Reserved 京ICP备11008061号 京公网110108006275号

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com bd.cuug.com

电话:010-59426307 010-59426319 邮政编码:100089

海淀校区:北京市海淀区紫竹院路88号紫竹花园4号楼D座703(CUUG)