Postgres-XL 是一个通用的 ACID 开源的、可方便进行水平扩展的 SQL 数据库解决方案。基于 PostgreSQL 数据库构建。Postgres-XL 可用于商业智能、大数据分析、Web 2.0、传统应用等场合。
此搭建过程是基于pgxc_ctl进行的安装的,除此外还有手动安装。
搭建过程参考:
http://blog.chinaunix.net/uid-20498361-id-4719153.html
http://blog.163.com/digoal@126/blog/static/163877040201441423449445/
http://files.postgres-xl.org/documentation/install-short.html
主机规划:
cnode1 (gtm,coordinator,datanode)
cnode2(gtm_proxy,coordinator,datanode)
cnode3(gtm_proxy,coordinator,datanode)
vi/etc/hosts
192.168.1.132cnode1
192.168.1.134 cnode2
192.168.1.133 cnode3
l 创建用户
为每台主机创建用户postgres。
# useradd postgres
#passwd postgres
#输入密码postgres
l 权限设置
安装过程中需要在datanode上创建目录,所以需要有$PGHOME目录的写权限。
在每台datanode和coordinator主机上执行以下命令:
chown -R postgres:postgres /usr/local/pgsql
l 设置环境变量 (到home路径最好,不然可能会没写权限)
# su - postgres
$ vi .bashrc
exportPGHOME=/usr/local/pgsql
exportPGUSER=postgres
exportLD_LIBRARY_PATH=$PGHOME/lib
exportPATH=$PGHOME/bin:$PATH
source ~/.bashrc //即时生效
l 安装
#yum install -y flex bison readline-devel zlib-devel openjade docbook-style-dsssl
#wget http://jaist.dl.sourceforge.net/project/postgres-xl/Releases/Version_9.2rc/ postgres-xl-v9.2-src.tar.gz
# tar -zxvf postgres-xl-v9.2-src.tar.gz
# cd postgres-xl
# ./configure
# make
# make install
l pgxc_ctl免密码运行(postgres用户下 )(gtm端)
mkdir~/.ssh
chmod 700~/.ssh
cd ~/.ssh
ssh-keygen-t rsa (一路回车 密码设空)
catid_rsa.pub >> authorized_keys
在 本机(cnode1) cnode2 cnode3 端 chmod 600 authorized_keys
把该文件的内容添加到其他需要安装的机器的authorized_keys文件中。 scp authorized_keys postgres@cnode2:/home/postgres/.ssh/ scp authorized_keys postgres@cnode3:/home/postgres/.ssh/
这样posgres用户就可以免密码登陆cnode2到cnode3主机了。
#ssh cnode2
l pgxc_ctl的配置 (on gtm)
/home/postgres/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
gtmProxyNames=(gtm_pxy1 gtm_pxy2)
gtmProxyServers=(cnode2 cnode3)
gtmProxyPorts=(20001 20001)
gtmProxyDirs=($gtmProxyDir/gtm_pxy1 $gtmProxyDir/gtm_pxy2)
gtmPxyExtraConfig=none
gtmPxySpecificExtraConfig=(none none)
#coordinator
coordMasterDir=/usr/local/pgsql
coordNames=(coord coord1 coord2)
coordPorts=(5432 5432 5432)
poolerPorts=(21011 21010 21012)
coordPgHbaEntries=(192.168.1.0/24)
coordMasterServers=(cnode1 cnode2 cnode3)
coordMasterDirs=($coordMasterDir/coord $coordMasterDir/coord1 $coordMasterDir/coord2)
coordMaxWALsernder=0
coordMaxWALSenders=($coordMaxWALsernder $coordMaxWALsernder $coordMaxWALsernder)
coordSlave=n
coordSpecificExtraConfig=(none none none)
coordSpecificExtraPgHba=(none node none)
#datanode
datanodeNames=(datanode datanode1 datanode2)
datanodePorts=(15431 15432 15433)
datanodePoolerPorts=(20011 20012 20012)
datanodePgHbaEntries=(192.168.1.0/24)
datanodeMasterServers=(cnode1 cnode2 cnode3)
datanodeMasterDir=/usr/local/pgsql
datanodeMasterDirs=($datanodeMasterDir/datanode $datanodeMasterDir/datanode1 $datanodeMasterDir/datanode2)
datanodeMaxWalSender=0
datanodeMaxWALSenders=($datanodeMaxWalSender $datanodeMaxWalSender $datanodeMaxWalSender)
datanodeSlave=n
primaryDatanode=datanode
至此搭建完成。
执行命令 (gtm端 /home/posgres/pgxc_ctl/)
#su - postgres
启动: #pgxc_ctl -c pgxc_ctl.conf init all
关闭:
#pgxc_ctl -c pgxc_ctl.conf kill all
启动完成后可以在任意节点进入postgresql进行操作,如:
#psql
# select * from pgxc_node; #查看xl集群的所有节点
或者创建一个数据库
#create database testdb;
其他端可以通过 \c testdb 连接使用。
建议测试时关闭防火墙,否则可能会出现连接不到gtm等问题。