文档章节

Postgres-XL测试

LIAN-SA
 LIAN-SA
发布于 2014/09/01 14:24
字数 1527
阅读 815
收藏 2


GTM-Proxy的作用:

GTM-Proxy is not a mandatory component of Postgres-XL cluster but it can be used to group messages between GTM and cluster nodes, reducing workload and the number of packages exchanged through network.

  

 项目由来:

In 2010, NTT's Open Source Software Center approached EnterpriseDB to build off of NTT OSSC's experience with a project called RitaDB and EnterpriseDB's experience with a project called GridSQL, and the result was a new project, Postgres-XC.

In 2012, a company called StormDB was formed with some of the original key Postgres-XC developers. StormDB added enhancements, including MPP parallelism for performance and multi-tenant security.

In 2013, TransLattice acquired StormDB, and in 2014, open sourced it as Postgres-XL.

 

PostgreSQL、Postgres-XC、Postgres-XL之间的区别:

 

 


启动集群的顺序:

gtm

gtm_standby

gtm_proxy

datanode

coordinator

 

 

关闭集群的顺序:

coordinator

datanode

gtm_proxy

gtm_standby

gtm

 

 

 

 IP、HostName设置:

# vi /etc/hosts
192.168.100.160 gtm
192.168.100.161 node1
192.168.100.162 node2

 

 

 

编译安装

# 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 --prefix=/opt/pgxl
# make
# make install

 

创建用户:

# useradd postgres

设置环境变量:

# su - postgres
$ vi .bash_profile
export PGHOME=/opt/pgxl
export PGUSER=postgres
export LD_LIBRARY_PATH=$PGHOME/lib
export PATH=$PGHOME/bin:$PATH

 

初始化

gtm节点上执行:

[root@gtm ~]# mkdir /opt/pgxl/data_gtm
[root@gtm ~]# chown postgres:postgres /opt/pgxl/data_gtm/
[root@gtm ~]# su - postgres
[postgres@gtm ~]$ initgtm -D /opt/pgxl/data_gtm/ -Z gtm

 

 

 

node1上执行:

[root@node1 ~]# mkdir -p /opt/pgxl/data/data_gtm_proxy
[root@node1 ~]# mkdir -p /opt/pgxl/data/data_coord1
[root@node1 ~]# mkdir -p /opt/pgxl/data/data_datanode1
[root@node1 ~]# chown -R postgres:postgres /opt/pgxl/data/
[root@node1 ~]# su - postgres
[postgres@node1 ~]$ initdb -D /opt/pgxl/data/data_coord1/ --nodename coord1
[postgres@node1 ~]$ initdb -D /opt/pgxl/data/data_datanode1/ --nodename datanode1
[postgres@node1 ~]$ initgtm -D /opt/pgxl/data/data_gtm_proxy/ -Z gtm_proxy

 

 

node2上执行:

[root@node2 ~]# mkdir -p /opt/pgxl/data/data_gtm_proxy
[root@node2 ~]# mkdir -p /opt/pgxl/data/data_coord2
[root@node2 ~]# mkdir -p /opt/pgxl/data/data_datanode2
[root@node2 ~]# chown -R postgres:postgres /opt/pgxl/data/
[root@node2 ~]# su - postgres
[postgres@node2 ~]$ initdb -D /opt/pgxl/data/data_coord2/ --nodename coord2
[postgres@node2 ~]$ initdb -D /opt/pgxl/data/data_datanode2/ --nodename datanode2
[postgres@node2 ~]$ initgtm -D /opt/pgxl/data/data_gtm_proxy/ -Z gtm_proxy

 

 

 

配置

gtm配置

gtm

[postgres@gtm ~]$ vi /opt/pgxl/data_gtm/gtm.conf
nodename = 'gtm'
listen_addresses = '*'
port = 6666
startup = ACT
keepalives_idle = 60
keepalives_interval = 10
keepalives_count = 10
log_file = 'gtm.log'
log_min_messages = WARNING

 

gtm_proxy配置

node1

[postgres@node1 ~]$ vi /opt/pgxl/data/data_gtm_proxy/gtm_proxy.conf
nodename = 'gtm_proxy1'
listen_addresses = '*'
port = 6661
worker_threads = 1
gtm_host = 'gtm'
gtm_port = 6666
gtm_connect_retry_interval = 5
keepalives_idle = 60
keepalives_interval = 10
keepalives_count = 10
log_file = 'gtm_proxy1.log'
log_min_messages = WARNING

node2

[postgres@node2 ~]$ vi /opt/pgxl/data/data_gtm_proxy/gtm_proxy.conf
nodename = 'gtm_proxy2'
listen_addresses = '*'
port = 6662
worker_threads = 1
gtm_host = 'gtm'
gtm_port = 6666
gtm_connect_retry_interval = 5
keepalives_idle = 60
keepalives_interval = 10
keepalives_count = 10
log_file = 'gtm_proxy2.log'
log_min_messages = WARNING

 

coordinator配置

node1

[postgres@node1 ~]$ vi /opt/pgxl/data/data_coord1/postgresql.conf
listen_addresses = '*'
port = 5432
pooler_port = 6667
max_pool_size = 100
pool_conn_keepalive = 600
pool_maintenance_timeout = 30
max_coordinators = 16
max_datanodes = 16
gtm_host = 'localhost'
gtm_port = 6661
pgxc_node_name = 'coord1'
 
[postgres@node1 ~]$ vi /opt/pgxl/data/data_coord1/pg_hba.conf
[添加]
host    all             all             192.168.100.0/24        trust

node2

[postgres@node2 ~]$ vi /opt/pgxl/data/data_coord1/postgresql.conf
listen_addresses = '*'
port = 5432
pooler_port = 6667
max_pool_size = 100
pool_conn_keepalive = 600
pool_maintenance_timeout = 30
max_coordinators = 16
max_datanodes = 16
gtm_host = 'localhost'
gtm_port = 6662
pgxc_node_name = 'coord2'
 
[postgres@node2 ~]$ vi /opt/pgxl/data/data_coord1/pg_hba.conf
[添加]
host    all             all             192.168.100.0/24        trust

 

 

 

 

datanode配置

node1

[postgres@node1 ~]$ vi /opt/pgxl/data/data_datanode1/postgresql.conf
listen_addresses = '*'
port = 15432
pooler_port = 6668
max_pool_size = 100
pool_conn_keepalive = 600
pool_maintenance_timeout = 30
max_coordinators = 16
max_datanodes = 16
gtm_host = 'localhost'
gtm_port = 6661
pgxc_node_name = 'datanode1'
 
[postgres@node1 ~]$ vi /opt/pgxl/data/data_coord1/pg_hba.conf
[添加]
host    all             all             192.168.100.0/24        trust

 

node2

[postgres@node1 ~]$ vi /opt/pgxl/data/data_datanode1/postgresql.conf
listen_addresses = '*'
port = 15432
pooler_port = 6668
max_pool_size = 100
pool_conn_keepalive = 600
pool_maintenance_timeout = 30
max_coordinators = 16
max_datanodes = 16
gtm_host = 'localhost'
gtm_port = 6662
pgxc_node_name = 'datanode2'
 
[postgres@node1 ~]$ vi /opt/pgxl/data/data_coord1/pg_hba.conf
[添加]
host    all             all             192.168.100.0/24        trust

 

启动

启动gtm

[postgres@gtm ~]$ gtm_ctl start -Z gtm -D /opt/pgxl/data_gtm/
server starting
 
[postgres@gtm ~]$ tail /opt/pgxl/data_gtm/gtm.log 
1:140169430058752:2014-06-12 07:51:17.652 CST -LOG:  Starting GTM server at (*:6666) -- control file /opt/pgxl/data_gtm/gtm.control
LOCATION:  main, main.c:601
1:140169430058752:2014-06-12 07:51:17.652 CST -LOG:  Restoring last GXID to 10000
       
LOCATION:  GTM_RestoreTxnInfo, gtm_txn.c:2673
1:140169430058752:2014-06-12 07:51:17.652 CST -LOG:  Started to run as GTM-Active.
LOCATION:  main, main.c:682

 

启动gtm_proxy

node1

[postgres@node1 ~]$ gtm_ctl start -Z gtm_proxy -D /opt/pgxl/data/data_gtm_proxy/
server starting
[postgres@node1 ~]$ tail /opt/pgxl/data/data_gtm_proxy/gtm_proxy1.log 
1:139860198487808:2014-06-12 07:53:59.665 CST -LOG:  Starting GTM proxy at (*:6661)
LOCATION:  main, proxy_main.c:805

node2

[postgres@node2 ~]$ gtm_ctl start -Z gtm_proxy -D /opt/pgxl/data/data_gtm_proxy/
server starting
[postgres@node2 ~]$ tail /opt/pgxl/data/data_gtm_proxy/gtm_proxy2.log 
1:140266037184256:2014-06-12 07:54:16.440 CST -LOG:  Starting GTM proxy at (*:6662)
LOCATION:  main, proxy_main.c:805

启动datanode

node1

[postgres@node1 ~]$ pg_ctl start -Z datanode -D /opt/pgxl/data/data_datanode1/

 

node2

[postgres@node2 ~]$ pg_ctl start -Z datanode -D /opt/pgxl/data/data_datanode2/

 

启动coordinator

node1

[postgres@node1 ~]$ pg_ctl start -Z coordinator -D /opt/pgxl/data/data_coord1/

node2

[postgres@node2 ~]$ pg_ctl start -Z coordinator -D /opt/pgxl/data/data_coord2/

 

 

 

注册节点信息

查看当前节点信息:

[postgres@node1 ~]$ psql -p 5432 -c "select * from pgxc_node"
 node_name | node_type | node_port | node_host | nodeis_primary | nodeis_preferred |  node_id   
-----------+-----------+-----------+-----------+----------------+------------------+------------
 coord1    | C         |      5432 | localhost | f              | f                | 1885696643
(1 row)
 
[postgres@node2 ~]$ psql -p 5432 -c "select * from pgxc_node"
 node_name | node_type | node_port | node_host | nodeis_primary | nodeis_preferred |   node_id   
-----------+-----------+-----------+-----------+----------------+------------------+-------------
 coord2    | C         |      5432 | localhost | f              | f                | -1197102633
(1 row)

执行注册

node1

[postgres@node1 ~]$ psql -p 5432 -c "CREATE NODE coord2 WITH (TYPE='coordinator',HOST='node2',PORT=5432)"
CREATE NODE
[postgres@node1 ~]$ psql -p 5432 -c "CREATE NODE datanode1 WITH (TYPE='datanode',HOST='node1',PORT=15432)"
CREATE NODE
[postgres@node1 ~]$ psql -p 5432 -c "CREATE NODE datanode2 WITH (TYPE='datanode',HOST='node2',PORT=15432)"
CREATE NODE

 

查看:

[postgres@node1 ~]$ psql -p 5432 -c "select * from pgxc_node"
 node_name | node_type | node_port | node_host | nodeis_primary | nodeis_preferred |   node_id   
-----------+-----------+-----------+-----------+----------------+------------------+-------------
 coord1    | C         |      5432 | localhost | f              | f                |  1885696643
 coord2    | C         |      5432 | node2     | f              | f                | -1197102633
 datanode1 | D         |     15432 | node1     | f              | f                |   888802358
 datanode2 | D         |     15432 | node2     | f              | f                |  -905831925
(4 rows)

 

重新加载:

[postgres@node1 ~]$ psql -p 5432 -c "select pgxc_pool_reload()"
 pgxc_pool_reload 
------------------
 t
(1 row)

 

node2

[postgres@node2 ~]$ psql -p 5432 -c "CREATE NODE coord1 WITH (TYPE='coordinator',HOST='node1',PORT=5432)"
CREATE NODE
[postgres@node2 ~]$ psql -p 5432 -c "CREATE NODE datanode1 WITH (TYPE='datanode',HOST='node1',PORT=15432)"
CREATE NODE
[postgres@node2 ~]$ psql -p 5432 -c "CREATE NODE datanode2 WITH (TYPE='datanode',HOST='node2',PORT=15432)"
CREATE NODE

 

查看:

[postgres@node2 ~]$ psql -p 5432 -c "select * from pgxc_node"
 node_name | node_type | node_port | node_host | nodeis_primary | nodeis_preferred |   node_id   
-----------+-----------+-----------+-----------+----------------+------------------+-------------
 coord2    | C         |      5432 | localhost | f              | f                | -1197102633
 coord1    | C         |      5432 | node1     | f              | f                |  1885696643
 datanode1 | D         |     15432 | node1     | f              | f                |   888802358
 datanode2 | D         |     15432 | node2     | f              | f                |  -905831925
(4 rows)

 

重新加载:

[postgres@node2 ~]$ psql -p 5432 -c "select pgxc_pool_reload()"
 pgxc_pool_reload 
------------------
 t
(1 row)

 

 

 BUG

create table t1(id int,name text) distribute by hash(id) to group group1;
 
 
create table t2(id int primary key,name text) distribute by hash(id) to group group1;
 
 
 
test=# create database pgxc;
LOG:  Will fall back to local snapshot for XID = 19764, source = 0,
gxmin = 0, autovac launch = 0, autovac = 0, normProcMode = 0, postEnv = 1
ERROR:  node "coord1_19791" does not exist
STATEMENT:  SET global_session TO coord1_19791;
ERROR:  node "coord1_19791" does not exist
STATEMENT:  SET global_session TO coord1_19791;
CREATE DATABASE
 
test=# create table t1(id int,name text) distribute by hash(id) to group
group1;
ERROR:  node "coord1_19791" does not exist
STATEMENT:  SET global_session TO coord1_19791;
ERROR:  node "coord1_19791" does not exist
STATEMENT:  SET global_session TO coord1_19791;
CREATE TABLE
 
test=# insert into t1 values (1,'a');
LOG:  Will fall back to local snapshot for XID = 19544, source = 0,
gxmin = 0, autovac launch = 0, autovac = 0, normProcMode = 0, postEnv = 1
ERROR:  node "coord1_19791" does not exist
STATEMENT:  SET global_session TO coord1_19791;
INSERT 0 0

 

 

 

问题汇总

Q1

'/usr/bin/perl' /bin/collateindex.pl -f -g -i 'bookindex' -o bookindex.sgml HTML.index
Can't open perl script "/bin/collateindex.pl": No such file or directory
make[4]: *** [bookindex.sgml] Error 2
make[4]: Leaving directory `/root/postgres-xl/doc-xc/src/sgml'
make[3]: *** [sql_help.h] Error 2
make[3]: Leaving directory `/root/postgres-xl/src/bin/psql'
make[2]: *** [all-psql-recurse] Error 2
make[2]: Leaving directory `/root/postgres-xl/src/bin'
make[1]: *** [all-bin-recurse] Error 2
make[1]: Leaving directory `/root/postgres-xl/src'
make: *** [all-src-recurse] Error 2

 

解决方式:

# yum install docbook-style-dsssl
# find / -name collateindex.pl
/usr/bin/collateindex.pl

 

 

 

 

 

 

 

 

© 著作权归作者所有

LIAN-SA
粉丝 29
博文 36
码字总数 76225
作品 0
广州
数据库管理员
私信 提问
Postgres XL FAQ

Q. What does XL stand for? XL is short for eXtensible Lattice. It also connotes an extra large version of PostgreSQL, in this case across multiple systems. Q. Is this a “NoSQL......

javasql
2014/07/31
0
0
Postgres XL与其它Postgres集群中间件的关系

Q. How does Postgres-XL relate to Postgres-XC and Stado? The project includes architects and developers who previously worked on both Postgres-XC and Stado, and Postgres-XL cont......

乌龟壳
2014/06/12
1K
0
Postgres-XL 10R1 release版本发布

2018年10月25日2ndQuadrant发布了Postgres-XL 10R1版本。Postgres-XL是一个大规模并行数据库,它基于PG社区版本开发,并和PG高度兼容,支持Business Intelligence负载和读写大事务负载。 PG...

yzs的专栏
07/21
0
0
Postgres-XL 10R1 发布,SQL 数据库解决方案

第二象限公司(2ndQuadrant)近期发布了Postgres-XL最新版本10R1。感兴趣的同学可以访问该网站并下载试用。 Postgres-XL是一个ACID的、可方便进行水平扩展的 SQL 数据库解决方案。基于 Post...

闻术苑
2018/10/29
954
0
PostgreSQL 和 PostgreSQL XL 的差异

最近看见Postgres 发表了PostgreSQL XL 这一个新的开源资料库系统,除了保留ACID 的特性之外,特别强调 PostgreSQL XL 的水平扩充特性。但是官方的文件中没否定非XL版的PostgreSQL 不能做水平...

Arthur1977
2014/06/24
976
3

没有更多内容

加载失败,请刷新页面

加载更多

Protocol Buffers 简介

文档编辑和持续集成状态: 本文档的 Protocol Buffer 的中文文档使用的是 Asciidoctor 进行编排的 http://docs.ossez.com/protocol-buffers-docs/index.html(本 WIKI 中的内容将会与在线发布...

honeymoose
今天
4
0
uniapp + bootstrapvue 移动/PC 一套搞定 (一)配置bootstrapvue

1.准备文件 自己到DCloud官网: http://dcloud.io/ 去下载官方的IDE Hbuilder,新建一个空的uniapp项目即可。 uniapp框架自带优化的vue,我们仅仅需要准备以下三个文件: bootstrap.min.css ...

panyunxing
今天
12
0
Android Camera原理之camera service类与接口关系

camera service主要是指 frameworks/av/services/camera/下面的代码,最近在看这一块的代码,为了更好地理清这一块的代码,也为了后续学习camera方便一些,我觉得很有必要理一下这一块的整体...

天王盖地虎626
今天
6
0
Golang学习笔记

[TOC] Golang学习笔记 这个学习笔记是最早在1.初,版本左右的时候写的,和当前最新的版本可能会有较大的差异. 因为成文比较早,文章里面又有很多自己的见解,有些东西当时理解的不太透彻可能写错...

我爱吃炒鸡
今天
21
0
科技赋能成效显著!金融壹账通两大赋能项目荣获IDC大奖

7月19日,2019IDC中国未来金融论坛曁颁奖典礼于北京举办。由金融壹账通赋能的长春农商银行多人视频面审智能风控系统、包头农商银行互联网银行SaaS服务两大项目因在项目的创新性、技术领先性、...

IFTNews
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部