计划开展PG学习,第一步安装PG数据库,搭建学习环境。根据前人经验,源码安装方式最贴合生产环境,本文采取这种方式。在墨天轮找到一套非常好的快速上手视频,本文内容也基本来自于该视频,推荐观看原版视屏及博客!
视频链接:PostgreSQL DBA快速上手教程
作者博客:http://www.knockatdatabase.com/category/postgresql/
官方文档:https://www.postgresql.org/docs/current/install-procedure.html
一、环境准备
CentOS 7.7
PostgreSQL 13.3 官网下载链接 下载postgresql-13.3.tar.gz这个包
二、前提条件
要求OS上已经安装下述软件。如果没有,可以直接通过yum来安装
1. 编译工具gmake或者make要求至少3.80版本以上
--查看make版本
[root@pxk ~]# make -v
GNU Make 3.82
...
--查看gmake版本
[root@pxk ~]# gmake -v
GNU Make 3.82
...
[root@pxk ~]# which make
/bin/make
[root@pxk ~]# which gmake
/bin/gmake
--gmake是一个链接文件指向make。在CentOS/RHEL平台上,默认情况下,gmake等同于make
[root@pxk ~]# ll /usr/bin/gmake
lrwxrwxrwx. 1 root root 4 Oct 27 2020 /usr/bin/gmake -> make
2. C编译器
[root@pxk ~]# which gcc
/bin/gcc
--查看gcc版本,教程上没写要求的版本,4.8.5版本验证可以安装
[root@pxk ~]# gcc -v
...
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
3. tar软件包
[root@pxk yum.repos.d]# which tar
/bin/tar
--查看tar版本
[root@pxk yum.repos.d]# tar --version
tar (GNU tar) 1.26
4. GNU readline library
该库文件默认启用。用于在psql命令行工具下,可以通过键盘的上下箭头调出历史命令以及编辑之前的命令。如果不需要此功能的话,可以在configure的时候,带上–without-readline选项。类似Oracle中的rlwrap。
5. zlib压缩引擎
该库文件默认启用。如果不需要此功能的话,可以在configure的时候,带上–without-zlib选项。当然如果带上该选项则意味着,使用pg_dump/pg_restore对数据库进行备份/恢复的时候,不支持对归档的压缩。
三、源码安装
1. 创建用户及组
groupadd postgres useradd -g postgres postgres passwd postgres
2. 创建数据库软件的安装路径
设定数据库软件安装在/data/postgres/13.3/路径下
数据库的数据存放在/data/postgres/13.3/data路径下
这里,先把/data/postgres/13.3/路径创建出来即可,/data/postgres/13.3/data路径不需提前创建,届时初始化数据库的时候,会自动创建。
mkdir -p /data/postgres/13.3/ chown -R postgres:postgres /data/ [root@pxk yum.repos.d]# ll /data/ total 0 drwxr-xr-x 3 postgres postgres 18 Jul 2 10:46 postgres
3. 将安装包上传到postgres家目录
下载好上传或者直接在服务器端wget下载
4. 解压源码
tar xzvf postgresql-13.3.tar.gz
--解压完成,进入目录查看
[postgres@pxk postgresql-13.3]$ pwd
/home/postgres/postgresql-13.3
[postgres@pxk postgresql-13.3]$ ll
total 1216
-rw-r--r-- 1 postgres postgres 490 May 11 04:41 aclocal.m4
drwxrwxr-x 2 postgres postgres 4096 May 11 04:52 config
-rw-rw-r-- 1 postgres postgres 431039 Jul 2 11:03 config.log
-rwxrwxr-x 1 postgres postgres 39974 Jul 2 11:03 config.status
-rwxr-xr-x 1 postgres postgres 568656 May 11 04:41 configure
-rw-r--r-- 1 postgres postgres 82388 May 11 04:41 configure.in
drwxrwxr-x 57 postgres postgres 4096 May 11 04:52 contrib
-rw-r--r-- 1 postgres postgres 1192 May 11 04:41 COPYRIGHT
drwxrwxr-x 3 postgres postgres 87 May 11 04:52 doc
-rw-rw-r-- 1 postgres postgres 4278 Jul 2 11:03 GNUmakefile
-rw-r--r-- 1 postgres postgres 4278 May 11 04:41 GNUmakefile.in
-rw-r--r-- 1 postgres postgres 277 May 11 04:41 HISTORY
-rw-r--r-- 1 postgres postgres 63684 May 11 04:53 INSTALL
-rw-r--r-- 1 postgres postgres 1665 May 11 04:41 Makefile
-rw-r--r-- 1 postgres postgres 1213 May 11 04:41 README
drwxrwxr-x 16 postgres postgres 4096 Jul 2 11:03 src
5. 执行configure
执行configure的命令行选项,–prefix参数,表示把PostgreSQL安装在哪个路径下。这里,我们就把它安装在前面第2步骤中配置的/data/postgres/13.3/路径下。默认情况下,不带该参数时,则会安装在/usr/local/pgsql路径下。
./configure --prefix=/data/postgres/13.3
--关于./configure命令的更多帮助和选项,可以通过./configure –help来查看更多
6. 执行make world
这里,也可以简单执行make就可以build安装文件的,但是,make world的意思是指把PostgreSQL相关的文档,HTML,以及其它的一些模块都会一起编译进去。比如,在有的环境下遇到无法使用uuid或者使用不了gin index的原因,就是在编译的时候,没有包含这些对应的模块。处理这种的问题的方法也不复杂,只需要进到当时安装时的那个源文件路径下,重新执行make world,然后make install-world。
建议,在初始安装的时候,就直接用make world或等价的gmake world命令。
gmake world
--可见输出最后一行
PostgreSQL, contrib, and documentation successfully made. Ready to install.
7. 执行make install-world
gmake install-world
--可见输出最后一行
PostgreSQL, contrib, and documentation installation complete.
8. 初始化数据库
/data/postgres/13.3/bin/initdb -D /data/postgres/13.3/data
初始化完成,提示:

9. 启动数据库
-- -l执行输出启动日志
./pg_ctl start -D /data/postgres/13.3/data/ -l /home/postgres/startup.log
启动完成

查看后台进程

10. 修改环境变量
vi ~/.bash_profile
--PATH添加 /data/postgres/13.3/bin
--添加PGDATA= /data/postgres/13.3/data
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/data/postgres/13.3/bin
PGDATA=/data/postgres/13.3/data
export PGDATA
export PATH
--生效 source ~/.bash_profile
到这里安装完成
四、修改参数
1. 修改pg_hba.conf
--在/data/postgres/13.3/data/pg_hba.conf文件中,添加下面的一行
#IPv4 local connections:
host all all 0.0.0.0/0 md5
表示当前数据库服务器,对使用IPV4地址的客户端机器,允许其通过任意IP地址,通过任意数据库用户发起对该数据库服务器上的任意数据库的访问,但是必须得提供数据库用户密码。其认证方式,是通过MD5加密认证的。
一句话简介:对于使用IPV4地址的客户端,数据库服务器不做限制,可以通过任意用户访问所有数据库
2. 修改postgresql.conf
在/data/postgres/13.3/data/postgresql.conf 文件中,修改#listen_addresses = ‘localhost’为listen_addresses = ‘*’

如果不修改的话,则客户端只能通过数据库服务器的环路地址127.0.0.1来访问数据库,不能使用服务器的对外IP地址来访问。也就是说,这个数据库只对本机提供服务,其它任何机器都访问不了这个数据库。
重启生效
pg_ctl restart -m fast -l /home/postgres/startup.log
五、删除数据库软件
使用postgres用户进入源码解压后的文件夹中,/home/postgres/postgresql-13.3 执行make uninstall命令进行卸载。
[postgres@pxk postgresql-13.3]$ gmake uninstall
gmake -C doc uninstall
gmake[1]: Entering directory `/home/postgres/postgresql-13.3/doc'
...
注意该命令只是把前面我们手工执行编译安装configure,install命令过程中写入操作系统的一些可执行命令删除,以及一些环境变量删了(这里我看了下.bash_profile文件,自己修改的环境变量依然在,这里原作者所说的环境变量应该为编译安装期间自行修改的环境变量)。我们在步骤2中手工创建的数据库安装路径依然存在,并不会被删除。
六、重新编译安装数据库软件
在一些情况下,我们可能需要重新编译安装数据库软件,比如初次安装的时候,如果不是使用make world编译源码的话,那么默认情况下少了很多数据库的扩展,而我们又发现需要用到这些扩展,该怎么办?或者,干脆,我们需要推倒重来的话,就可以选择重新编译安装。
方式1.重新解压源码、编译、安装
可以从前面第4步开始重新走一遍流程,即重新解压源码,用新解压出来的源码文件,再依次进行configure,make world,make install-world。
方式2.清除之前的编译状态
就是把之前第5步骤执行configure之后的文件状态,恢复到configure之前的状态,然后再通过执行configure,make world,make install-world。这个命令是make distclean。说白了,这个命令就是将源代码路径下的文件恢复到刚解压出来的状态,清除了之前执行configure命令对该路径下的所有文件的修改。
cd /home/postgres/postgresql-13.3
--执行该命令后,源代码路径的输出结果和最开始的解压源码之后的输出保持一样,即恢复到刚解压的状态
gmake distclean
七、总结
建议看原版教程的视频和博客,黄伟老师讲的很好,确实是快速上手。相比于Oracle,PG确实安装简单太多,按照上面流程安装完成,/data只有88M也很小。






