Postgres-XL集群搭建

Postgres-XL 是一个完全满足ACID的、开源的、可方便进行水平扩展的、多租户安全的。支持share-nothing;支持海量数据并行处理-MPP(Massively Parallel Processing)。是不是跟 greenplum很相似。

主机分配

3台主机,安装centos6.2。当然可以准备多台服务器;这个视场景而定合理安排(gtm为一台独立的主机;例外每台机器最好同时配置一个Coordinator和一个Datanode,这样既不用担心二者的负载均衡,而且可以降低网络流量);

192.168.1.201 (gtm)

192.168.1.202 (coordinator,datanode)

192.168.1.203 (coordinator,datanode)

Postgres-XL下载安装

下载地址 -- http://www.postgres-xl.org/download/

下载包 :--postgres-xl-v9.2-src.tar.gz

在每一个节点上安装依赖包 ;

yum install -y flex bison readline-devel zlib-devel openjade docbook-style-dsssl gcc

安装Postgres-XL

在每个节点执行

# tar -zxvf postgres-xl-v9.2-src.tar.gz

# cd postgres-xl1

# ./configure --prefix=/usr/local/pgxl-9.2      --安装目录;可以不带。

# make

# make install

在gtm主机;即192.168.1.201执行 安装工具pgxc_ctl

# cd contrib/pgxc_ctl

# make

# make install

创建用户

# useradd postgres

# passwd postgres

配置环境变量

export PGUSER=postgres

export PGHOME=/usr/local/pgxl-9.2

export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

export PATH=$HOME/bin:$PGHOME/bin:$PATH

在postgres家目录下的.bashrc文件添加上面内容;并source .bashrc使之生效!

配置ssh免密码登录for pgxc_ctl;

$ ssh-keygen -t rsa

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ chmod 600 ~/.ssh/authorized_keys

$ scp ~/.ssh/authorized_keys [email protected]:~/.ssh/

$ scp ~/.ssh/authorized_keys [email protected]:~/.ssh/

若其他服务器没有.ssh目录;可手动创建下 mkdir .ssh;chmod 700 .ssh

配置集群并使用pgxc_ctl初始化集群;

在gtm节点服务器操作;新建192.168.1.201服务器的/home/postgres/pgxc_ctl/pgxc_ctl.conf文件;添加如下内容

#user and path
pgxcOwner=postgres
pgxcUser=$pgxcOwner
pgxcInstallDir=/usr/local/pgxl-9.2

#gtm and gtmproxy
gtmMasterDir=$HOME/pgxc/nodes/gtm
gtmMasterPort=6666
gtmMasterServer=192.168.1.201
gtmSlave=n

#gtm proxy
gtmProxy=n

#coordinator
coordMasterDir=$HOME/pgxc/nodes/coord
coordNames=(coord1 coord2)
coordPorts=(5432 5432)
poolerPorts=(6667 6668)
coordPgHbaEntries=(192.168.1.0/32)
coordMasterServers=(192.168.1.202 192.168.1.203)
coordMasterDirs=($coordMasterDir/coord1 $coordMasterDir/coord2)
coordMaxWALsernder=0
coordMaxWALSenders=($coordMaxWALsernder $coordMaxWALsernder)
coordSlave=n
coordSpecificExtraConfig=(none none none)
coordSpecificExtraPgHba=(none none none)

#datanode
datanodeNames=(datanode1 datanode2)
datanodePorts=(15432 15432)
datanodePoolerPorts=(6669 6670)
datanodePgHbaEntries=(192.168.1.0/32)
datanodeMasterServers=(192.168.1.202 192.168.1.203)
datanodeMasterDir=$HOME/pgxc/nodes/datanode
datanodeMasterDirs=($datanodeMasterDir/datanode1 $datanodeMasterDir/datanode2)
datanodeMaxWalSender=0
datanodeMaxWALSenders=($datanodeMaxWalSender $datanodeMaxWalSender)
datanodeSlave=n
primaryDatanode=datanode1

初始化集群

pgxc_ctl -c /home/postgres/pgxc_ctl/pgxc_ctl.conf init all

启动/关闭集群

pgxc_ctl -c /home/postgres/pgxc_ctl/pgxc_ctl.conf start all

pgxc_ctl -c /home/postgres/pgxc_ctl/pgxc_ctl.conf stop all

配置集群信息

在coordinator,datanode节点操作

在服务器192.168.1.202,192.168.1.203操作进入psql目录下 psql -p 5432 -d postgres ,psql -p 15432 -d postgres其他node做对应的操作;本地node只坐修改即可;其他都要create node。

select * from pgxc_node;

create node coord1 with (type=coordinator,host=‘192.168.1.202‘, port=5432);

create node coord2 with (type=coordinator,host=‘192.168.1.203‘, port=5432);

alter node coord1 with (type=coordinator,host=‘192.168.1.202‘, port=5432);

alter node coord2 with (type=coordinator,host=‘192.168.1.203‘, port=5432);

create node datanode1 with (type=datanode, host=‘192.168.1.202‘,port=15432,primary=true);

create node  datanode2 with (type=datanode, host=‘192.168.1.203‘,port=15432);

alter node  datanode1 with (type=datanode, host=‘192.168.1.202‘,port=15432,primary=true);

alter node  datanode2 with (type=datanode, host=‘192.168.1.203‘,port=15432);

select pgxc_pool_reload();

测试环境OK?

以上步骤做好了;开始测试操作

[[email protected] datanode1]$ psql -p 5432 postgres
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.

postgres=# create role lottu nosuperuser login encrypted password ‘li0924‘;
CREATE ROLE
postgres=# create tablespace tbs_lottu owner postgres location ‘/home/postgres/data/lottu‘;
ERROR:  directory "/home/postgres/data/lottu" does not exist
postgres=# create tablespace tbs_lottu owner postgres location ‘/home/postgres/data/lottu‘;
CREATE TABLESPACE
postgres=# create database lottu owner lottu template template0 encoding ‘UTF8‘ tablespace tbs_lottu;
CREATE DATABASE

postgres=# \c lottu lottu

lottu=> create table lottu01 (id int primary key, name varchar(10));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "lottu01_pkey" for table "lottu01"
CREATE TABLE

lottu=> insert into lottu01 select generate_series(1,1000),‘lottu‘||generate_series(1,1000);
INSERT 0 1000

[[email protected] datanode1]$ psql -p 5432 lottu lottu
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.
lottu=> select count(*) from lottu01;
 count
-------
  1000
(1 row)
lottu=> \q
[[email protected] datanode1]$ psql -p 15432 lottu lottu
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.
lottu=> select count(*) from lottu01;
 count
-------
   492
(1 row)
[[email protected] ~]$ psql -p 15432 lottu lottu
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.

lottu=> select count(*) from lottu01;
 count
-------
   508
(1 row)

【FAQ】

1. 在配置集群信息出现

“WARNING:  can not connect to GTM: No route to host

WARNING:  Xid is invalid.

ERROR:  GTM error, could not obtain snapshot XID = 0”

分析原因:看提示“No route to host”跟网络路由有关;也可以能跟防火墙有关

解决方案:配置防火墙或者关闭防火墙

2. 在创建role时出现“ERROR:  Failed to get pooled connections”

分析原因:

1.首先我查看了pool进程是否存在;

2.核对检查下pgxc_pool的配置是否OK;

3.执行psql -h 192.168.1.203 -p 5432 发现超时;这就跟pg_hba.conf文件有关。

解决方案:

添加host    all             all             192.168.1.0/32         trust

其中的32跟主机设置的netmask有关

参考文献

--https://ruihaijiang.wordpress.com/2015/09/17/postgres-xl-installation-example-on-linux/

时间: 2024-11-02 01:57:31

Postgres-XL集群搭建的相关文章

redis3.0集群搭建

Redis集群搭建 redis cluster介绍 节点自动发现.集群容错slave选举.Cluster管理.集群配置管理. 集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信 集群采用Hash Slot方案,而不是一致性哈希,共16384个Hashslot.如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便. 由于Hash

rabbitmq集群搭建(centos6.5)

一:rabbitmq的安装: 参考:http://www.blogjava.net/hellxoul/archive/2014/06/25/415135.html http://blog.haohtml.com/archives/15249 说明:修改机器名字后再安装(为后面集群做准备) vi /etc/sysconfig/network 修改名字 vi /etc/hosts 修改地址映射表,如192.168.1.112   rabbitmq-node1.com rabbitmq-node1 #

linux 下heartbeat简单高可用集群搭建

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.通过Heartbeat我们可以实现双机热备,以实现服务的持续性. linux下基于heartbeat的简单web服务的高可用集群搭建 首先规划好两台主机作为heartbeat的双机热备,命名为node1.lvni.cc(主) ;node2.lvni.cc, node1的eth0IP :192.168.157.148  Vip eth0:0:192.168.157.149 node2的eth0IP :19

mysql5.7 MGR集群搭建

mysql5.7 MGR集群搭建部署 此文章由队员(谆谆)拟写 此文章来自 乌龟运维 官网 wuguiyunwei.com QQ群 602183872 最近看了一下mysql5.7的MGR集群挺不错的,有单主和多主模式,于是乎搭建测试了一下效果还不错,我指的不错是搭建和维护方面都比较简单.网上绝大多数都是单主模式,当然我这里也是,为了加深印象,特意记录一下搭建过程,等以后再去尝试多主模式,相信大家现在数据库的瓶颈基本都是在写,读写分离虽然是一种可行的解决方案,但是如果数据量很大,写一样会有问题,

MySQL主从复制、读写分离、高可用集群搭建

MySQL主从复制.读写分离.高可用集群搭建  一.服务介绍   1.1 Keepalived     Keepalived,见名知意,即保持存活,其目的是解决单点故障,当一台服务器宕机或者故障时自动切换到其他的服务器中.Keepalived是基于VRRP协议实现的.VRRP协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成虚拟设备,可以对外提供虚拟路由器IP(一个或多个),即漂移IP(VIP). 1.2 ProxySQL ProxySQL是一个高性能,高可用性的MySQL

Mosquitto搭建Android推送服务(二)Mosquitto集群搭建

文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简单的Mosquitto集群模式. 首先集群需要2台以上的Mosquitto服务器.安装方式同上. 先了解下Mosquitto集群模式的逻辑图,如下: 可以看出,无论在那台服务器中订阅了信息,无论在那台服务器上发布信息,订阅者都可以收到发布的信息.那么下一步我们着手搭建集群服务器,为了方便只演示2台服

25.redis集群搭建笔记

###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码 1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,key是用hash存在的,key分布在数组的槽位内(16384个槽位),下标从0到2^N,并且采用链表解决冲突. yum install -y ruby yum install -y rubygems 2.安装ruby和redis的接口程序 cp redis-3.0.0.gem /usr/local/ g

elasticsearch2.2 集群搭建各种坑

目前生产环境的es版本是1.0版本,需要升级到最新的2.2版本,于是在测试环境进行部署集群测试,在测试过程中遇到的坑相当多,下面详细介绍下. 1. 版本升级到2.2后,必须建一个单独的账号用于启动elasticsearch,不可以使用root账号进行启动,否则会报以下错误 Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. 2. 如果需要通过ip进行访问es集群,

kafka学习(二)-zookeeper集群搭建

zookeeper概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名 服务等.Zookeeper是hadoop的一个子项目,其发展历程无需赘述.在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制 不适合在某些应用中使用,因此需要有一种可靠的.可扩展的.分布式的.可配置的协调机制来统一系统的状态.Zookeeper的目的就在于此. 1.角色 Zookeeper中的角色主要有以下三

Spark修炼之道(进阶篇)——Spark入门到精通:第一节 Spark 1.5.0集群搭建

作者:周志湖 网名:摇摆少年梦 微信号:zhouzhihubeyond 本节主要内容 操作系统环境准备 Hadoop 2.4.1集群搭建 Spark 1.5.0 集群部署 注:在利用CentOS 6.5操作系统安装spark 1.5集群过程中,本人发现Hadoop 2.4.1集群可以顺利搭建,但在Spark 1.5.0集群启动时出现了问题(可能原因是64位操作系统原因,源码需要重新编译,但本人没经过测试),经本人测试在ubuntu 10.04 操作系统上可以顺利成功搭建.大家可以利用CentOS