PostgreSQL学习之一:安装
环境:
操作系统:Red Hat Enterprise Linux Server release 6.8
PostgreSQL: 11.4
1,从官网下载安装包
https://www.postgresql.org/ftp/source/
postgresql-11.4.tar.gz 或者
postgresql-11.4.tar.bz2
2,源码安装的要求
必须项,虽然有without的选项,但是建议不这么做:
a) make的版本要大于3.8
命令:make --version
b) ISO/ANSI C 编译器
命令:yum list installed|grep gcc
c) tar包
d) Readline库,用于上下文切换,默认使用,如果不需要,可以在configure的时候指定--without-readline。另外,对于linux使用程序包安装的方式,需要安装readline和readline-devel
命令:yum list installed readline
e)zlib 压缩库,默认使用,如果不使用,同样需要指定--without-zlib,不过这样子会导致不支持对pg_dump和pg_restore的压缩功能,同样需要安装zlib以及zlib-devel
命令:yum list installed zlib
非必选项
a) 如果要使用PL/Perl,你需要安装完整的perl,包括libperl库和头文件。最低版本要求是5.8.3. 因为PL/Perl会是一个share的库,所以libperl也必须是share的。
这个在最近版本的perl里面都是默认的,早先的版本则需要自己选择。configure的时候可能会因为找不到一个share的libperl而失败,这种情况你只能够重新安装perl。
如果你不仅仅只是偶尔使用,或者附带使用PL/Perl,你必须确保安装Perl的时候启用了usemultipicity选项。(:)完全没这方面的知识,不懂。)
b) 如果要使用PL/Python,你必须要安装python,包括头文件和工具发布模块。最低版本要求是Python 2.4. Python 3支持3.1以及之后的版本。
同样的,因为PL/Python会是share的库,libpython库也必须是share的。源码安装Python的时候,指定--enable-shared。
c)使用PL/Tcl过程语言,安装Tcl,最低版本8.4
d)启用NLS,允许显示非英语的程序语言信息,需要完整的Gettext API。如果操作系统没有内置,需要从http://www.gnu.org/software/gettext/下载插件包。如果你是用GNU C部署的的Gettext,还需要额外安装GNU Gettext
e)加密客户端连接,你需要OpenSSL,最低版本是0.0.8
PS:
如果是通过Git tree来安装,而不是发布的源码包,或者你想要做服务器开发,你也需要以下的包:
a) Flex 2.5.31 or later and Bison 1.875 or later
b) Perl 5.8.3
https://www.gnu.org/prep/ftp or ftp://ftp.gnu.org/gnu/
磁盘空间要求:
源码100MB,安装路径20MB。一个空的数据库集群需要35MB。数据库需要flat text文件的大小的五倍空间。如果你要跑regession test,你需要额外的150MB的临时空间
3,安装步骤
解压:tar -xzvf postgresql-11.4.tar.gz
到解压出来的目录:cd postgresql-11.4
第一步,configuration
./configure
这一步是为了配置对应你系统的源码文件,以及提供安装选项的选择。configure脚本会跑一系列的测试,来决定不同系统所依赖的变量的数值,并且检测是否有任何错误。最后会创建一些安装文件,记录测试结果。
所有的文件默认会安装在/usr/local/pgsql,也可以选择指定,不过如果目录不包含“postgres”或者“pgsql”,则会自动创建一个./postgresql
第二步,make
make
输出结果为:All of PostgreSQL successfully made. Ready to install.
PS:如果要编译所有可编译的内容,包括documentation和附件模块,则用:make world
可选,regression test
make check
第三步,安装文件
make install
如果前面跑的是make world,这里要跑的是:make install-world
PS:
卸载:make uninstall ,不会删除之前创建的路径
清理:make clean, 会清除source tree安装文件,但是会保留configure步骤生成的文件,所以不会影响重新make&&make install
还原:make distclean 如果你configure的时候的选项错了,可以选择这个操作,重置source tree,然后重新跑。
第四步,Post-Installation
1,share Libraries
在某些系统你需要配置LD_LIBRARY_PATH变量指向/usr/local/pgsql/lib, 在FreeBSD, HP-UX, Linux, Net-BSD, OpenBSD, 和 Solaris上这一步不是必须的。
2,配置环境变量
在~/.bash_profile或者/etc/profile(对所有用户生效)里面添加路径:
PATH=/usr/local/pgsql/bin:$PATH
export PATH
第五步,数据库操作
1,配置用户,一般是postgres,也可以自己指定
adduser postgres
passwd postgres
2,创建路径作为数据存储区域
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
3,初始化数据库集群,数据库集群是由单个实例管理的多个数据库的集合,在系统层面,数据库集群是一个存放数据的单一路径。
初始化命令:initdb,-D指定数据存放路径,可以通过设置环境变量PGDATA代替-D选项。
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
初始化的过程中,会默认创建两个数据库,一个是postgres,数据库服务本身并不要求一定要有这一个数据库,只不过某些第三方软件会默认有这个DB。
另一个是template1,这个是一个模板,用于后续创建的数据库,不应该用来做实际使用。
如果在初始化之前,路径里面就已经有其他文件了,就没办法跑initdb,这是为了避免覆盖其他已安装的数据库。
同时,因为该路径是用来存储数据的,所以initdb的过程也会移除其他用户的权限,除了postgres本身这个用户,而像group,Group这种,可以开启只读权限。
4,启动服务
/usr/local/pgsql/bin/postgres -i -D /usr/local/pgsql/data >/usr/local/pgsql/data/pgs.log 2>&1 &
-D指定数据库路径
>logfile 2>&1日志文件
&后台运行
5,创建数据库
/usr/local/pgsql/bin/createdb test
6,登录DB test
/usr/local/pgsql/bin/psql test
7,关闭数据库服务
pg_ctl stop -D /usr/local/pgsql/data -m fast