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服务启停方式请参见相关文章说明,暂且到此。