Chinaunix首页 | 论坛 | 博客
  • 博客访问: 838582
  • 博文数量: 91
  • 博客积分: 2544
  • 博客等级: 少校
  • 技术积分: 1885
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-12 09:08
文章存档

2016年(10)

2014年(2)

2013年(4)

2012年(23)

2011年(23)

2010年(13)

2009年(14)

2007年(2)

分类: LINUX

2016-04-14 15:54:21

说明:手动安装postgres-xl比较麻烦,而且容易出错。手动安装时参考了网上的一篇文章,还是没有安装成功。
最后用pgxc_ctl进行自动安装,终于安装成功了。记录的过程如下:

* 主机规划 
cnode1 (gtm) 
cnode2 (gtm_proxy,coordinator,datanode) 
cnode3 (gtm_proxy,coordinator,datanode) 
cnode4 (gtm_proxy,coordinator,datanode) 
cnode5 (gtm_proxy,coordinator,datanode) 


* 安装pgxc_ctl
在gtm或任意一台机器上上解压源码
#tar -zxvf postgres-xl-v9.2-src.tar.gz 
# cd postgres-xl/contrib/pgxc_ctl/
# make
# make install
这样pgxc_ctl就安装完成了,后续的安装就可以用该命令来进行了。


* 主机名配置 
#cat /etc/hosts 
192.168.1.21 cnode1 
192.168.1.22 cnode2 
192.168.1.23 cnode3 
192.168.1.24 cnode4 
192.168.1.25 cnode5 


* 安装 
# yum install -y flex bison readline-devel zlib-devel openjade docbook-style-dsssl 
# wget  
# tar -zxvf postgres-xl-v9.2-src.tar.gz 
# cd postgres-xl 
# ./configure 
# make 
# make install 


* 创建用户 
为每台主机创建用户postgres,当然也可以是pgxl用户。 
# useradd postgres
# passwd postgres
# 输入密码


* 设置环境变量 
# su - postgres 
$ vi .bashrc #注意这里环境变量一定要添加到.bashrc文件中,否则会找不到相关命令 
export PGHOME=/usr/local/pgsql 
export PGUSER=postgres 
export LD_LIBRARY_PATH=$PGHOME/lib 
export PATH=$PGHOME/bin:$PATH 


* 权限设置 
安装过程中需要在datanode上创建目录,所以需要有$PGHOME目录的写权限。 
在每台datanode和coordinator主机上执行以下命令: 
chown -R postgres:postgres /usr/local/pgsql 


* pgxc_ctl免密码运行 
ssh-keygen -t rsa (in ~/.ssh目录下) 
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
若不是在本地安装,需要把该文件的内容添加到其他需要安装的机器的authorized_keys文件中。 
scp authorized_keys postgres@cnode2:/home/postgres/.ssh/ 
scp authorized_keys postgres@cnode3:/home/postgres/.ssh/ 
scp authorized_keys postgres@cnode4:/home/postgres/.ssh/ 
scp authorized_keys postgres@cnode5:/home/postgres/.ssh/ 
这样posgres用户就可以免密码登陆node1到node5主机了。 

我这里是在GTM主机上执行安装过程的,所以需要在gtm机器上执行以上命令,并把生成的 
id_rsa.pub 文件追加到其他datanode和coordinator主机的.ssh/authorized_keys上。 


* pgxc_ctl的配置(on gtm) 
# 现在就要开始对pgxc_ctl的配置文件进行创建了,内容如下: 
# 若有变量不清楚的,可以查看手册:http://files.postgres-xl.org/documentation/pgxc_ctl.html 
# 我这里的配置文件内容如下(注意这里没有配置gtm的代理节点,生产环境下是一定要配置的,我另有文章讲解) 
# 注意该配置文件的默认路径是当前目录下的pgxc_ctl下。 
# pgxc_ctl.conf 的内容如下: 


# user and path 
pgxcOwner=postgres 
pgxcUser=$pgxcOwner 
pgxcInstallDir=/usr/local/pgsql/ 

#gtm and gtmproxy 
gtmMasterDir=/usr/local/pgsql/gtm 
gtmMasterPort=6666 
gtmMasterServer=cnode1 
gtmSlave=n 

#gtm proxy 
gtmProxy=y 
gtmProxyDir=/usr/local/pgsql/data 
gtmProxyNames=(gtm_pxy1 gtm_pxy2 gtm_pxy3 gtm_pxy4) 
gtmProxyServers=(cnode2 cnode3 cnode4 cnode5) 
gtmProxyPorts=(20001 20001 20001 20001) 
gtmProxyDirs=($gtmProxyDir/gtm_pxy1 $gtmProxyDir/gtm_pxy2 $gtmProxyDir/gtm_pxy3 $gtmProxyDir/gtm_pxy4) 
gtmPxyExtraConfig=none 
gtmPxySpecificExtraConfig=(none none none none) 

#coordinator 
coordMasterDir=/usr/local/pgsql/data 
coordNames=(coord1 coord2 coord3 coord4) 
coordPorts=(5432 5432 5432 5432) 
poolerPorts=(20010 20010 20010 20010) 
coordPgHbaEntries=(192.168.1.0/24) 
coordMasterServers=(cnode2 cnode3 cnode4 cnode5) 
coordMasterDirs=($coordMasterDir/coord1 $coordMasterDir/coord2 $coordMasterDir/coord3 $coordMasterDir/coord4) 
coordMaxWALsernder=0 
coordMaxWALSenders=($coordMaxWALsernder $coordMaxWALsernder $coordMaxWALsernder $coordMaxWALsernder) 
coordSlave=n 
coordSpecificExtraConfig=(none none none none) 
coordSpecificExtraPgHba=(none none none none) 


#datanode 
datanodeNames=(datanode1 datanode2 datanode3 datanode4) 
datanodePorts=(15432 15432 15432 15432) 
datanodePoolerPorts=(20012 20012 20012 20012) 
datanodePgHbaEntries=(192.168.1.0/24) 
datanodeMasterServers=(cnode2 cnode3 cnode4 cnode5) 
datanodeMasterDir=/usr/local/pgsql/data 
datanodeMasterDirs=($datanodeMasterDir/datanode1 $datanodeMasterDir/datanode2 $datanodeMasterDir/datanode3 $datanodeMasterDir/datanode4) 
datanodeMaxWalSender=0 
datanodeMaxWALSenders=($datanodeMaxWalSender $datanodeMaxWalSender $datanodeMaxWalSender $datanodeMaxWalSender) 
datanodeSlave=n 
primaryDatanode=datanode1 


* 执行pgxc_ctl初始化 
创建一个shell脚本:pgxc_ctl_init.sh 
注意我这里是在gtm主机上执行该命令的。 

#!/bin/bash 
# 初始化postgres-xl集群 
# 
pgxc_ctl -c pgxc_ctl.conf init all 

. 执行命令 
su - postgres 
pgxc_ctl -c pgxc_ctl.conf init all 


* 测试
任选一台cooridinator主机
#su - postgres
postgres=# create database testdb;
CREATE DATABASE

参考url: 
pgxc_ctl命令参考手册: 
安装教程:
阅读(2985) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~