[PGSQL]Linux下的PostgreSQL简单安装手册

首先安装依赖包:

如果在Redhat中:

yum install python-devel.x86_64    
yum install readline.x86_64 readline-devel.x86_64

PostgreSQL还需要zib包,不过一般我们安装好的redhat 操作系统zlib包都装好了,可以用下面的命令检查:

root@bucardo1:/root>rpm -qa |grep zlib
zlib-1.2.3-3
zlib-devel-1.2.3-3

如果是debian或ubuntu则:

sudo aptitude search libreadline-dev zlib1g-dev libperl-dev python-dev

从官网上下载源码包,放到/usr/src目录下:

如果是8.4.X的版本:

cd /usr/src
tar xvf postgresql-8.4.9.tar.bz2
./configure --prefix=/usr/local/pgsql8.4.9 --enable-thread-safety --with-perl --with-python
make
make install
cd /usr/local
ln -s pgsql8.4.9 pgsql

如果是9.X的版本:

cd /usr/src
tar xvf postgresql-9.3.1.tar.bz2
./configure --prefix=/usr/local/pgsql9.3.1 --with-perl --with-python
make
make install
cd /usr/local
ln -s pgsql9.3.1 pgsql

 

注意,我们把postgresql8.4.9安装到,/usr/local/pgsql8.4.9,然后建了一个链接/usr/local/pgsql,

这主要是为了升级postgresql小版本方便,如当出来postgresql8.4.10时,我们把postgresql8.4.10安装到/usr/local/pgsql8.4.10,

然后把链接/usr/local/pgsql指向/usr/local/pgsql8.4.10就可以了。

  在/etc/profile增加路径:

export PATH=/usr/local/pgsql/bin:$PATH   
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH

建postgres用户:

groupadd -g 701 postgres    
useradd -m -g postgres -u 701 postgres

建postgresql数据库的数据主目录

这个数据库主目录是随实际情况而不同,这里我们的主目录是在/data/pgdata目录下:

mkdir /data/pgdata
chown postgres:postgres /data/pgdata

在postgres用户下的.bashrc文件中添加如下内容,方便以后启动数据库和关闭数据库:

export PGDATA=/data/pgdata    
alias pgstart='pg_ctl -D $PGDATA start'
alias pgstop='pg_ctl kill INT \`head -1 $PGDATA/postmaster.pid\`'
export LANG=en_US.utf8

使用initdb初使用化数据库

export LANG=zh_CN.utf8    
initdb
export LANG=en_US.utf8

注意这里初使用化数据库时,先把LANG设置为zh_CN.utf8,这主要是为了把数据库初使化是使用中文的排序规则,

也就是按中文拼音排序,postgresql8.X下这个排序规则只能在数据库初使用化时设置,初使用化完成后,就不能再改了。

 

安装postgres中的contrib中的包:

cd /usr/src/postgresql-8.4.9/contrib    
make 
make install
su - postgres
pgstart

安装contrib模块,PostgreSQL8.4.X下需要:

cd /usr/local/pgsql/share/contrib
psql template1 -f adminpack.sql
psql template1 -f dblink.sql
psql template1 -f pageinspect.sql
psql template1 -f pg_buffercache.sql
psql template1 -f pgcrypto.sql
psql template1 -f pg_freespacemap.sql
psql template1 -f pgrowlocks.sql
psql template1 -f pg_stat_statements.sql
psql template1 -f pgstattuple.sql
psql template1 -f tablefunc.sql

如果是PostgreSQL9.1,就不需要上面的命令,只需要执行下面的SQL:  

CREATE EXTENSION adminpack;
CREATE EXTENSION dblink;
CREATE EXTENSION pageinspect;
CREATE EXTENSION pg_buffercache;
CREATE EXTENSION pgcrypto;
CREATE EXTENSION pg_freespacemap;
CREATE EXTENSION pgrowlocks;
CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION pgstattuple;
CREATE EXTENSION tablefunc;

 

为了使用这些扩展包,PostreSQL8.4.X下需要在postgresql.conf中增加如下配置:

shared_preload_libraries = 'pg_stat_statements,auto_explain'

为了使用这些扩展包,需要在postgresql.conf中增加如下配置:

custom_variable_classes = 'pg_stat_statements,auto_explain'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
auto_explain.log_min_duration = '10s'
auto_explain.log_analyze = false
auto_explain.log_verbose = false
auto_explain.log_nested_statements =true

  附XFS的配置方法:

因为在Linux下,PostgreSQL数据库一般总是使用XFS,所以这里把在Redhat中配置XFS方法也写在这:  安装XFS:

yum -y install xfsdump.x86_64 xfsprogs.x86_64 xfsprogs-devel.x86_64

把硬盘分区,这里是sdb:

parted /dev/sdb mkpart primary xfs 0 1797G
parted /dev/sdb p
mkfs.xfs -f -i size=512,attr=2 -l lazy-count=1 -d su=1m,sw=12 -L /data /dev/sdb1

fstab中配置:

echo LABEL=/data /data xfs defaults,noatime,nodiratime,noikeep,nobarrier,logbufs=8,logbsize=32k,allocsize=512M,attr2,largeio,inode64,swalloc 0 0 >>/etc/fstab

增加文件/etc/sysconfig/modules/xfs.modules,内容如下:

#!/bin/sh

MODULES="xfs"
test -f /etc/sysconfig/xfs  && . /etc/sysconfig/xfs 
for i in $MODULES ; do 
    modprobe $i >/dev/null 2>1 
done

这样做了每次机器重新启动时,就会自动装载xfs。