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下载安装

下载包 :--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 postgres@192.168.1.202:~/.ssh/
$ scp ~/.ssh/authorized_keys postgres@192.168.1.203:~/.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?
以上步骤做好了;开始测试操作
[postgres@localhost 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 [postgres@localhost 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
[postgres@localhost 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)
[postgres@localhost ~]$ 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有关
 

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

  1. apigateway-kong(五)集群搭建部署

    kong 集群将使得系统通过增加更多机器,从而实现水平扩展,承接更多的请求流量.它们将共享同样的配置且使用同一个数据库.kong 集群中的的所有节点都连接同一个数据库. 你需要在 kong 集群的上一 ...

  2. Hadoop3集群搭建之——hive安装

    Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hbase安装及简单操作 现在到 ...

  3. druid.io本地集群搭建 / 扩展集群搭建

    druid.io 是一个比较重型的数据库查询系统,分为5种节点 . 在此就不对数据库进行介绍了,如果有疑问请参考白皮书: http://pan.baidu.com/s/1eSFlIJS 单台机器的集群 ...

  4. harbor高可用集群搭建

    高可用harbor集群搭建 一.安装部署 1.节点角色 角色 数量 名称 备注 harbor主节点 2 harbor-1 harbor-2 双主模式 haproxy 2 HA-1 HA-2 需要通过k ...

  5. 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

    Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  6. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  7. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  8. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  9. (三)Spark-Hadoop集群搭建-Java&Python版Spark

    Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...

  10. Mosquitto搭建Android推送服务(三)Mosquitto集群搭建

    文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简 ...

随机推荐

  1. 一个前端html模板处理引擎(javascript) - pure

    做后台开发(java/python)的同学开发web应用,对于前端页面生成技术并不陌生,像jsp,freemark等.开发UGC类型的互联网站,因为要SEO友好,所以一般都会在后台用模板引擎直接生成好 ...

  2. javascript实例学习之六—百叶窗效果

    一.要结合布局才能形成百叶窗的效果 二.开启两个定时器,第一个定时器控制的是百叶窗整体一次上翻,一次下翻:另一个控制百叶窗中的各页逐次翻转,形成层次效果.否则就成了普通的滚动广告的效果了 本实现借助于 ...

  3. iOS开发 - 网络数据安全加密(MD5)

    提交用户的隐私数据 一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登 ...

  4. System.Threading.Timer使用心得

    System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高. "只要在使用 Timer,就必须保留对它的引用."对于任何托 ...

  5. Python:使用psycopg2模块操作PostgreSQL

    安装psycopg2模块: 怎么验证是否已经安装过psycopy2? 编写上面代码,运行看是否抛出缺少psycopg2模块. 安装方法1: 1)使用psycopg2-2.4.2.win-amd64-p ...

  6. 学习OpenCV——ORB简化版&Location加速版

    根据前面surf简化版的结构,重新把ORB检测的代码给简化以下,发现虽然速度一样,确实能省好多行代码,关键是有 BruteForceMatcher<HammingLUT>matcher的帮 ...

  7. layoutsubviews什么时候调用

    layoutSubviews在以下情况下会被调用:1.init初始化不会触发layoutSubviews2.addSubview会触发layoutSubviews3.设置view的Frame会触发la ...

  8. PostgreSQL Replication之第九章 与pgpool一起工作(7)

    9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用Pos ...

  9. SQL top查询

    select *from emp;

  10. C#: enum

    C#的枚举类型跟C++差不多,一般我们将enum设为单个状态,比如enum color_t { RED, BLACK, GREEN}, 只能选择一个 而有的时候枚举可以作为位运算来进行与或运算,比如C ...