前言
最近在学习postgresql,工作中需要,买了一本《PostgreSQL修炼之道》按照上面操作,几次按照上面的都是失败。后面查看很多资料后,才成功。这是根据这本书第十九章内容修改的地方,希望给广大学习爱好者帮助。最后希望那些作者,把书写的详细一些,把自己做成功的案例写出来。
一、系统环境
系统平台:centos 6.5
postgres-XC版本: pgxc-v1.2.1.tar.gz
防火墙关闭 selinux设置SELINUX=disabled
二、集群规划
| 主机名 |
IP地址 |
角色 |
端口 |
nodename |
数据目录 |
| gtm |
172.16.0.101 |
Gtm |
6666 |
gtm |
/home/pgxc/gtm |
| standby |
172.16.0.102 |
Gtm的备库 |
6666 |
standby |
/home/pgxc/gtm_standby |
| cd1 |
172.16.0.103 |
Coordinator |
5432 |
co1 |
/home/pgxc/coordinator |
| Datanode |
5433 |
dn1 |
/home/pgxc/pgdata |
| Gtm Proxy |
6666 |
gtmproxy01 |
/home/pgxc/gtm_proxy |
| cd2 |
172.16.0.104 |
Coordinator |
5432 |
co2 |
/home/pgxc/coordinator |
| Datanode |
5433 |
dn2 |
/home/pgxc/pgdata |
| Gtm Proxy |
6666 |
gtmproxy02 |
/home/pgxc/gtm_proxy |
| cd3 |
172.16.0.105 |
Coordinator |
5432 |
co3 |
/home/pgxc/coordinator |
| Datanode |
5433 |
dn3 |
/home/pgxc/pgdata |
| Gtm Proxy |
6666 |
gtmproxy03 |
/home/pgxc/gtm_proxy |
?
三、安装依赖包(五台操作)
yum install -y bison flex perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
四、增加用户(五台操作)
groupadd pgxc
useradd pgxc -g pgxc
passwd pgxc
?
五、源码安装(五台操作)
tar zxvf pgxc-v1.2.1.tar.gz
cd postgres-xc-1.2.1/
./configure --prefix=/opt/pgxc --with-perl --with-python
gmake
gmake install
六、配置环境变量(五台操作)
su - pgxc
vi .bash_profile
export PGHOME=/opt/pgxc
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
alias rm='rm -i'
alias ll='ls -lh'
?
source .bash_profile
?
七、初始化GTM
在172.16.0.101这台机器上运行如下命令:
[root@gtm ~]# su - pgxc
[pgxc@gtm ~]$ initgtm -Z gtm -D /home/pgxc/gtm
编辑/home/pgxc/gtm/gtm.conf文件,如下:
?
nodename = 'gtm'
listen_addresses = '*'
port = 6666
startup = ACT
配置项的说明如下。
nodename:指定节点的名称,可能指定为任意的一个名称,不能与其他节点的名称重复。
listen_address:GTM监听的IP地址,“*”在所有的IP地址上监听
port:GTM监控的端口
startup:确定GTM启动后是主库还是standby。如果是主库,设置为“ACT”,如果是standby,则设置为“STANDBY”。
八、初始化GTM的备库
在172.16.0.102这台机器上运行如下命令:
[root@standby ~]# su - pgxc
[pgxc@standby ~]$ initgtm -Z gtm -D /home/pgxc/gtm_standby
编辑/home/pgxc/gtm_standby/gtm.conf文件,如下:
?
nodename = 'standby'
listen_addresses = '*'
port = 6666
startup = STANDBY
active_host = '172.16.0.101'
active_port =6666
配置项的说明如下。
startup:因为是GTM的备库,所以要设置为“STANDBY”。
active_host:指定连接GTM主库的IP地址
active_port:指定连接GTM备库的端口。
?
九、初始化GTM Proxy
在172.16.0.103,172.16.0.104,172.16.0.105这三台机器pgxc用户上,分别执行以下命令:
initgtm -Z gtm_proxy -D /home/pgxc/gtm_proxy
?
172.16.0.103中配置文件 /home/pgxc/gtm_proxy/gtm_proxy.conf的内容如下:
nodename = 'gtmproxy01'
port = 6666
gtm_host = '172.16.0.101'
gtm_port = 6666
?
172.16.0.104中配置文件 /home/pgxc/gtm_proxy/gtm_proxy.conf的内容如下:
nodename = 'gtmproxy02'
port = 6666
gtm_host = '172.16.0.101'
gtm_port = 6666
?
172.16.0.105中配置文件 /home/pgxc/gtm_proxy/gtm_proxy.conf的内容如下:
nodename = 'gtmproxy03'
port = 6666
gtm_host = '172.16.0.101'
gtm_port = 6666
?
十、初始化Coordinator 、数据节点
1.在172.16.0.103这台机器上运行如下命令:
initdb -D /home/pgxc/coordinator --nodename co1 -E UTF8 --local=C -U pgxc -W
initdb -D /home/pgxc/pgdata --nodename dn1 -E UTF8 --local=C -U pgxc -W
?
172.16.0.103这台机器上 coordinator配置文件/home/pgxc/coordinator/postgresql.c