说明:手动安装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命令参考手册:
安装教程:
阅读(2977) | 评论(0) | 转发(0) |