PG学习第一篇:Install PostgreSQL 9.5 on CentOS 6.5

首先打个广告:舍弟的网站,上海婚姻房产律师网,提供民商事诉讼、企业法律顾问服务,有需要的可以关注一下

http://www.18702119962.com/

 

安装部分参考书籍唐成老师的《PostgreSQL修炼之道》

1. 系统准备
克隆一台CentOS 6.5并修改IP、计算机名、网卡信息;具体操作如下:
[root@demo ~]# ifconfig#记录MAC地址,后面会用到 : HWaddr 00:0C:29:38:97:68
[root@demo ~]# vi /etc/hosts#修改hosts:172.16.16.191 dbserver dbserver
[root@demo ~]# vi /etc/sysconfig/network #修改network :HOSTNAME=dbserver
[root@demo ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0#修改eth0 :IPADDR=172.16.16.191 HWADDR=00:0C:29:38:97:68
[root@demo ~]# reboot
2. 安装一些依赖的包
[root@dbserver ~]# yum -y install wget gcc gcc-c++ readline-devel zlib-devel make   systemtap systemtap-sdt-devel \
perl perl-devel python python-devel tcl  tcl-devel    perl-ExtUtils-Embed \
sgml-common docbook stylesheets openjade  sgml-tools  xsltproc libxslt libxslt-devel \
libxml2 libxml2-devel zlib zlib-devel openssl openssl-devel   pam pam-devel libreadline6-dev  bison flex 
3. 下载PostgreSQL 9.5
从官网 http://www.postgresql.org/download/ 下载想要的版本,放到自己能找到的文件夹内,我习惯于放在root 目录 下的soft文件夹内
[root@dbserver ~]# mkdir soft && cd soft
[root@dbserver ~]# wget -c "https://ftp.postgresql.org/pub/source/v9.5.4/postgresql-9.5.4.tar.gz"
[root@dbserver ~]# tar xvzf postgresql-9.5.4.tar.gz && cd postgresql-9.5.4
4. 自定义安装(也可直接运行configure命令进行缺省安装,缺省时所有文件都被安装到 /usr/local/pgsql 目录,configure参数将在结尾详述)
    [root@dbserver postgresql-9.5.4]# mkdir /usr/local/postgresql-9.5.4
[root@dbserver postgresql-9.5.4]# ./configure --prefix=/usr/local/postgresql-9.5.4 \
--with-perl --with-python --with-tcl  \
--with-openssl  --without-ldap  \
--with-libxml  --with-libxslt    \
--with-wal-blocksize=16   \
--with-blocksize=16 \
--enable-dtrace  \
--enable-debug
[root@pg postgresql-9.5.4]# make && make install#PostgreSQL installation complete. 安装成功,检查/usr/local/postgresql-9.5.4/ 路径下会生成安装生成的文件
[root@dbserver postgresql-9.5.4]# cd contrib/
[root@dbserver contrib]# make && make install#安装contrib目录下的一些第三方工具,建议安装
[root@pg contrib]# cd
5. 创建用户、数据目录、初始化数据库
[root@dbserver ~]# useradd postgres && passwd postgres
[root@dbserver ~]# su postgres
[postgres@dbserver root]$ mkdir /home/postgres/data -p #注意如果没有切换到postgres用户,需要给新建文件加postgres账号的权限
[postgres@dbserver root]$ cd
[postgres@dbserver ~]$ /usr/local/postgresql-9.5.4/bin/initdb --encoding=utf8 -D /home/postgres/data  #至此已安装完成,按照提示可进行启动和登录了,如下
[postgres@dbserver ~]$ /usr/local/postgresql-9.5.4/bin/pg_ctl -D /home/postgres/data -l logfile start #启动
[postgres@dbserver ~]$ /usr/local/postgresql-9.5.4/bin/psql #登录
6. 添加环境变量
[postgres@dbserver ~]$ vi .bash_profile #添加内容如下:
##################################################
export PATH=/usr/local/postgresql-9.5.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/postgresql-9.5.4/lib:$LD_LIBRARY_PATH
##################################################
[postgres@dbserver ~]$ source .bash_profile 
[postgres@dbserver ~]$ pg_ctl restart -D /home/postgres/data/ #重启

至此本地的PG已经安装完成,但是需要远程访问和配置出相对高性能的PG,还需要编辑/home/postgres/data 目录下的postgresql.conf 和pg_hba.conf这两个配置文件,具体配置可直接参考里面说明。

罗列一下遇到的坑:1.安装过程中有变更postgres账号密码,那么安装之后本地登录没问题,远程登录即使你密码输入是对的(你修改之后的密码),也会提示报错“psql: FATAL:  password authentication failed for user "postgres"”,原因是初始化的时候记录的postgres密码是未改之前的密码(如果你此时可以记得你修改之前的postgres密码,用那个,是可以登录的,O(∩_∩)O哈哈~),本地登录pg ,用alter role 修改密码即可。2. postgres账号的"root"目录(既/home/postgres)忘了添加环境变量,执行pg_ctl失败。
目前就遇到这一个,后续遇到继续补上

7.关于.configure命令的参数介绍(来自官方文档,在此复制过来,供参考:http://postgres.cn/docs/9.3/installation.html)

./configure
该脚本将运行一些测试来决定一些系统相关的变量,并检测操作系统的设置, 最后将在编译树中创建一些文件以记录它找到了什么。 如果你想保持编译目录的独立, 那么你也可以在源代码树之外的其它目录里运行configure。 这个过程也被称为VPATH 编译。这里是方法:


mkdir build_dir
cd build_dir
/path/to/source/tree/configure [options go here]
gmake
缺省设置将编译服务器和应用程序,还有所有只需要C编译器的客户端程序和接口。 缺省时所有文件都将安装到/usr/local/pgsql目录。


你可以通过给出下面的一个或多个configure命令 行选项来自定义编译和安装过程:


--prefix=PREFIX
把所有文件安装到PREFIX目录下而不是/usr/local/pgsql里。 实际的文件会安装到不同的子目录里; 甚至没有一个文件会直接安装到PREFIX目录里。


如果你有特殊需要,你还可以用下面的选项自定义不同子目录的位置。 不过,即使你保持缺省设置,安装也是可以再定位的,意味着在安装之后可以移动目录(man和doc的位置不受影响)。


为了可以再定位安装,你可能需要使用configure的--disable-rpath选项。 还有,你需要告诉操作系统如何找到共享库。


--exec-prefix=EXEC-PREFIX
把系统结构相关的文件安装到EXEC-PREFIX, 而不是PREFIX设置的地方。 这样做可以比较方便地在不同主机之间共享系统结构相关的文件。如果你省略它, 那么EXEC-PREFIX就会被设置为等于PREFIX并且不论与系统结构相关与否的文件 都会被安装到同一目录树下,这也可能是你想要的。


--bindir=DIRECTORY
声明可执行程序的目录,缺省是EXEC-PREFIX/bin, 通常也就是/usr/local/pgsql/bin。


--sysconfdir=DIRECTORY
设置各种配置文件的目录。缺省是PREFIX/etc。


--libdir=DIRECTORY
设置库文件和可动态装载模块的目录。缺省是EXEC-PREFIX/lib。


--includedir=DIRECTORY
设置C和C++头文件的目录。缺省是PREFIX/include。


--datarootdir=DIRECTORY
设置各种类型只读数据文件的根目录。这只设置了一些下面的缺省选项。缺省是 PREFIX/share。


--datadir=DIRECTORY
设置使用安装程序的只读数据文件的目录,缺省是DATAROOTDIR。 请注意这与你的数据库文件放在哪里无关。


--localedir=DIRECTORY
设置安装区域数据的目录,特别是消息转变目录文件。缺省是 DATAROOTDIR/locale。


--mandir=DIRECTORY
随着PostgreSQL一起的手册页将安装到这个目录的manx子目录里。 缺省是DATAROOTDIR/man。


--docdir=DIRECTORY
设置除"man"以外的文档文件的根目录。这只设置下面选项的缺省, 这个选项的缺省值是DATAROOTDIR/doc/postgresql。


--htmldir=DIRECTORY
PostgreSQL的HTML-格式文档将安装在这个目录。 缺省是DATAROOTDIR。


注意: 为了让PostgreSQL能够安装在一些共享的安装位置(比如/usr/local/include), 同时又不至于和系统其它部分产生名字空间干扰,我们采取了一些措施。 首先,安装脚本会自动给datadir, sysconfdir和docdir后面附加上"/postgresql"字符串, 除非展开的完整路径名已经包含字符串"postgres"或者 "pgsql"。 比如,如果你选择/usr/local作为prefix, 那么文档将安装在/usr/local/doc/postgresql, 但如果prefix是/opt/postgres,那么它将被放到/opt/postgres/doc。 客户端接口的公共C头文件安装到了includedir,并且是名字空间无关的。 内部的头文件和服务器端的头文件都安装到includedir下的私有目录中去了。 参考每种接口的文档获取关于如何访问头文件的信息。最后,如果合适, 那么也会在libdir下创建一个私有的子目录,用于安装动态装载模块。
--with-includes=DIRECTORIES
DIRECTORIES是一系列冒号分隔的目录, 这些目录将被加入编译器的头文件搜索列表中。 如果你有一些可选的包(比如GNU Readline)安装在非标准位置, 你就必须使用这个选项, 以及可能还有相应的--with-libraries选项。


例子: --with-includes=/opt/gnu/include:/usr/sup/include。


--with-libraries=DIRECTORIES
DIRECTORIES是一系列冒号分隔的目录,这些目录是用于查找库文件的。 如果你有一些包安装在非标准位置, 你可能就需要使用这个选项(以及对应的--with-includes选项)。


例子:--with-libraries=/opt/gnu/lib:/usr/sup/lib。


--enable-nls[=LANGUAGES]
打开本地语言支持(NLS),也就是以非英文显示程序的消息的能力。 LANGUAGES是一个可选的空格分隔的语言代码列表,标识你想支持的语言。 比如--enable-nls='de fr'。(你提供的列表和实际支持的列表之间的交集会自动计算出来。) 如果你没有声明一个列表,那么就安装所有可用的翻译。


要使用这个选项,你需要一个Gettext的实现。见上文。


--with-pgport=NUMBER
NUMBER为服务器和客户端的缺省端口(缺省是 5432)。这个端口可以在以后设置, 不过如果你在这里声明,那么服务器和客户端将有相同的编译好了的缺省值。这样会方便些。 通常选取一个非缺省值的好理由是你企图在同一台机器上运行多个PostgreSQL服务。


--with-perl
编译PL/Perl服务器端编程语言。


--with-python
编译PL/Python服务器端编程语言。


--with-tcl
编译PL/Tcl服务器端编程语言。


--with-tclconfig=DIRECTORY
Tcl安装的tclConfig.sh文件所在目录,它里面包含编译 Tcl 模块的配置信息。 这个文件通常会自动在约定俗成的位置找到这些文件,但是如果你需要一个不同版本的Tcl, 你也可以指定能找到它的目录。


--with-gssapi
编译支持GSSAPI认证的东西。在许多系统上,GSSAPI(通常Kerberos安装部分)系统没有安装在缺省的搜索目录下 (比如 /usr/include,/usr/lib), 所以你必须使用附加的--with-includes和--with-libraries选项。 configure在继续配置之前将检查所需要的头文件和库, 以确保GSSAPI是充分可用的。


--with-krb5
编译支持 Kerberos 5 认证的东西。在许多系统上, Kerberos 系统没有安装在缺省的搜索目录下(比如 /usr/include,/usr/lib), 所以你必须使用附加的--with-includes和--with-libraries选项。 configure在继续配置之前将检查所需要的头文件和库,以确保 Kerberos 是充分可用的。


--with-krb-srvnam=NAME
缺省的Kerberos服务主的名称(通过GSSAPI使用)。缺省是postgres。 通常没有理由改变这个值。除非你在Windows环境下,在这种情况下必须设置大写POSTGRES。


--with-openssl
编译支持SSL(加密的)连接。这个选项需要安装OpenSSL包。 configure将在安装之前检查所需要的头文件和库文件以确信OpenSSL安装是充分可用的。


--with-pam
编译PAM(可插拔认证模块)支持。


--with-ldap
编译LDAP支持。 用于认证和查找连接参数(参见第 31.17 节和第 19.3.8 节以获取更多信息)。 在 Unix 上,这需要OpenLDAP包的支持。 在Windows上,缺省使用WinLDAP库。 configure将会检查所需的头文件和库以确保OpenLDAP的安装是充分可用的。


--without-readline
避免使用Readline与libedit库。 这样就关闭了psql里的命令行编辑和历史,因此我们不建议这么做。


--with-libedit-preferred
优先使用BSD-认证的libedit库而不是GPL认证的Readline库。 该选项仅在同时安装了这两个库的情况下才有意义。 缺省使用Readline库。


--with-bonjour
编译Bonjour支持。这要求操作系统支持Bonjour。在Mac OS X上建议使用。


--with-ossp-uuid
使用OSSP UUID library编译组件。 特别是,编译 uuid-ossp模块, 它提供了函数产生UUIDs.。


--with-libxml
编译libxml (开启SQL/XML支持)。需要Libxml 2.6.23或者更高版本支持这一特性。


Libxml安装程序xml2-config可用于检测所需的编译器和链接器选项。 如果发现,PostgreSQL将自动使用它。 在一个不寻常的位置来指定libxml安装, 您可以要么设置环境变量XML2_CONFIG以指向 xml2-config附属于安装的程序 或者使用选项--with-includes和--with-libraries。


--with-libxslt
当编译 xml2模块时,使用libxslt。 xml2依赖于这个库执行XML的XSL转变。


--disable-integer-datetimes
禁用64 位的时间戳整数存储和时间间隔支持。并且作为浮点数存储日期时间值。 在PostgreSQL8.4版本发布之前缺省浮点日期时间存储。 但它现在已经过时,因为它没有支持timestamp值的全范围的微秒精度。 然而,基于整数的日期时间存储需要一个64位的整数类型。 因此,当没有这样的类型可用时,或适用于PostgreSQL先前版本的应用程序时, 可以使用此选项。 参阅 第 8.5 节获取更多的信息。


--disable-float4-byval
禁用"按值传递"float4值,使它们"通过引用"传递。 此选项消耗性能,但可能需要与用C语言编写的旧的用户定义的函数兼容,并且使用 "版本 0"调用约定。一个更好的长期的解决办法是使用"版本 1"调用约定更新任何此类函数。


--disable-float8-byval
禁用"按值传递"传递float8值,使它们"通过引用"传递。 此选项消耗性能,但可能需要与用C语言编写的旧的用户定义的函数兼容,并且使用 "版本 0"调用约定。一个更好的长期的解决办法是使用"版本 1"调用约定更新任何此类函数 请注意,此选项不仅影响float8,而且也影响int8以及一些相关类型(如时间戳)。 在32位平台上,缺省是--disable-float8-byval。 并且它不允许选择--enable-float8-byval。


--with-segsize=SEGSIZE
设置段大小 ,以GB为单位。 大表被分成多个操作系统文件,每个文件的大小等同于段大小。 这避免了存在许多平台上的文件大小限制。 默认段大小,1GB,在所有支持的平台上是安全的。 如果你的操作系统支持"largefile"(现在大多数支持), 你可以使用更大的段大小。 这可以帮助减少当大表工作时消耗掉的文件描述符数量。 但要小心,不要选择一个大于您的平台和您打算使用的文件系统支持的值, 你可能希望使用其他工具,比如tar, 也可以设置可用文件大小的限制。 因此建议,虽然不是绝对必要的,但该值是2的幂。 请注意,改变这个值需要初始化数据库。


--with-blocksize=BLOCKSIZE
设置块大小,以KB为单位。这是表中存储和I/O单元。 默认情况下,8KB,适用于大多数情况; 但是其它的值可能在特殊情况下是有用的。 该值必须是1和32之间(KB)2的幂。 请注意,改变这个值需要初始化数据库。


--with-wal-segsize=SEGSIZE
设置WAL段大小,以MB为单位。 这是WAL日志中每个单独的文件的大小。它可能有助于调整这个大小来控制WAL日志传送的粒度。 缺省大小为16MB。 该值必须是1和64之间(MB)2的幂。 请注意,改变这个值需要初始化数据库。


--with-wal-blocksize=BLOCKSIZE
设置WAL块大小,以KB为单位。 这是WAL日志中存储和I/O单元。 默认情况下,8KB,适用于大多数情况; 但是其它的值可能在特殊情况下是有用的。 该值必须是1和64之间(KB)2的幂。 请注意,改变这个值需要初始化数据库。


--disable-spinlocks
允许在PostgreSQL没有该平台的CPU自旋锁支持的情况下编译成功。 缺乏自旋锁的支持将导致性能恶化; 因此,只有在编译过程退出,并且告诉你说该平台缺乏自旋锁支持的时候才使用这个选项。 如果在你的平台上需要这个选项才能编译PostgreSQL, 请向PostgreSQL开发者报告这个问题。


--disable-thread-safety
禁用客户端库是线程安全的。 这样就允许在libpq和 ECPG程序里的并发线程安全地控制他们私有的连接句柄。


--with-system-tzdata=DIRECTORY
PostgreSQL包括它自己的时区数据库, 它要求对日期和时间操作。此时区数据库实际上是与许多操作系统比如FreeBSD,Linux, and Solaris提供的"zoneinfo"时区数据库兼容。 所以重新安装将是多余的。当这个选项被使用时,将使用系统在DIRECTORY中提供的时区数据库来代替PostgreSQL源代码发布中的时区数据库。 DIRECTORY必须作为绝对路径被指定。 /usr/share/zoneinfo是某些操作系统上的可能目录。 请注意,这个安装程序将不检测不匹配的或者错误的时间区域数据。 如果您使用此选项,建议您运行回归测试,以验证你指定的时区数据, 在PostgreSQL中能够很好的工作。


该选项主要是针对那些对他们要使用的操作系统了如指掌的二进制软件包的分发者。 使用此选项的主要优势是,当许多当地白昼节约时间规则变化的任何时候,PostgreSQL包不需要升级。 另一个优点是,如果时区数据库文件在安装期间不需要被编译,PostgreSQL可以进行交叉编译更直截了当。


--without-zlib
避免使用Zlib库。这样就关闭了pg_dump 和pg_restore里面的压缩支持。 这个选项只适用于那些没有这个库的罕见的系统。


--enable-debug
把所有程序和库以带有调试符号的方式编译。这意味着你可以通过一个调试器运行程序来分析问题。 这样做显著增大了最后安装的可执行文件的大小,并且在非GCC的编译器上, 这么做通常还要关闭编译器优化,导致速度的下降。但是,如果有这些符号的话, 就可以非常有效地帮助解决可能发生的问题。目前, 我们只是在你使用GCC的情况下才建议在产品的安装中使用这个选项。 但是如果你正在进行开发工作,或者正在使用beta版本, 那么你就总应该打开它。


--enable-coverage
如果使用GCC,所有的程序和库连同代码覆盖测试设置一起被编译。 在运行时,它们与代码覆盖率度量在编译目录下生成文件。 参阅第 30.4 节 获取更多信息该选项只在使用GCC进行开发工作时使用。。


--enable-profiling
如果使用GCC,则编译所有程序和库,使他们可以配置。在后台退出,创建子目录, 包含配置用的gmon.out文件。 该选项只在使用GCC进行开发工作时使用。


--enable-cassert
打开服务器中的assertion检查,它会检查许多"不可能发生"的条件。 它对于代码开发的用途而言是无价之宝,不过这些测试可以显著减缓服务器。 并且,打开这个测试不会提高系统的稳定性!这些断言检查并不是按照错误的严重性分类的, 因此一些相对无害的小问题也可能导致服务器重启 (只要它触发了一次断言失败)。目前, 我们不推荐在产品环境中使用这个选项,但是如果你在做开发或者在使用beta版本的时候应该打开它。


--enable-depend
打开自动依赖性跟踪。如果打开这个选项, 那么 makefile 文件将设置为在任何头文件被修改的时候都将重新编译所有受影响的目标文件。 如果你在做开发的工作,那么这个选项很有用,但是如果你只是想编译一次并且安装, 那么这就是浪费时间。目前,这个选项只有在你使用GCC的时候才管用。


--enable-dtrace
编译PostgreSQL支持动态跟踪工具DTrace。 参阅第 27.4 节获取更多信息。


指向dtrace程序,设置环境变量DTRACE。 这往往是必须的,因为dtrace 通常安装在/usr/sbin中且该目录一般不在搜索路经中。


在环境变量DTRACEFLAGS中为dtrace程序指定 额外命令行选项。在Solaris上, 要包含64位二进制的DTrace支持,需要为configure指定DTRACEFLAGS="-64",比如, 在使用GCC编译的时候:


./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
在使用Sun编译器的时候:


./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
如果你喜欢使用不同于configure找出来的 C 编译器, 可以将环境变量CC设置为你选择的程序。缺省时, configure将选择gcc(只要可用), 或者是该平台的缺省(通常是cc)。类似地, 你可以用CFLAGS覆盖缺省编译器标志。


你可以在configure命令行上声明环境变量,比如:


./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'












 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值