postgres-xl集群安装与使用

概述

本文是几年前的整理笔记,现分享出来。实际上是把我cu上的那篇文章整理到这里。供大家参考。

手动安装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 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 

创建用户

为每台主机创建用户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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值