原 Postgresql-XL安装部署

机器准备:

3台虚拟机信息:                 gtm:a. 版本信息:Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux                          b. IP:192.168.100.199    

                node1:a. 版本信息:Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux                             b. IP:192.168.100.201

                node2:a. 版本信息:Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux                             b. IP:192.168.100.202

安装(三台虚机同时按下面步骤安装):

        1、下载源码:官方下载网盘下载。         2、解压源码

tar xvf postgres-xl-v9.2-src.tar.gz

        3、编译安装

./configure --prefix=/opt/pgxl
make
make install

注:编译过程中出现的问题(centos5会出现此问题,6则不会):

'/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
#cp /usr/bin/collateindex.pl /bin/

节点部署:

新建用户(三台虚机依次操作,注意:一定要用相同的用户,否则会发生用户找不到的问题):

[root@localhost opt]# useradd pgxl
[root@localhost opt]# chown -R pgxl pgxl/
[root@localhost opt]# su pgxl
[pgxl@localhost pgxl]$ ls
bin  data_gtm  include  lib  share
[pgxl@localhost pgxl]$ cd bin/
[pgxl@localhost bin]$ ls
clusterdb   createuser  dropuser  gtm_ctl    initgtm        pg_config       pg_dump         pg_resetxlog  postmaster  vacuumdb
createdb    dropdb      ecpg      gtm_proxy  makesgml       pg_controldata  pg_dumpall      pg_restore    psql
createlang  droplang    gtm       initdb     pg_basebackup  pg_ctl          pg_receivexlog  postgres      reindexdb
[pgxl@localhost bin]$

初始化:

gtm初始化:

[pgxl@localhost bin]$ ./initgtm -D /opt/pgxl/data_gtm/ -Z gtm
The files belonging to this GTM system will be owned by user "pgxl".
This user must also own the server process.


creating directory /opt/pgxl/data_gtm ... ok
creating configuration files ... ok

Success. You can now start the GTM server using:

    ./gtm -D /opt/pgxl/data_gtm
or
    ./gtm_ctl -Z gtm -D /opt/pgxl/data_gtm -l logfile start

[pgxl@localhost bin]$

node1初始化(initdb初始化过程和pg初始化过程一致,这里就不多赘述了):

[pgxl@localhost bin]$ ./initdb -D /opt/pgxl/data/coordinator1/ --nodename coordinator1
[pgxl@localhost bin]$ ./initdb -D /opt/pgxl/data/datanode1/ --nodename datanode1
[pgxl@localhost bin]$ ./initgtm -D /opt/pgxl/data/gtm_proxy1/ -Z gtm_proxy
The files belonging to this GTM system will be owned by user "pgxl".
This user must also own the server process.

creating directory /opt/pgxl/data/gtm_proxy1 ... ok
creating configuration files ... ok

Success. You can now start the GTM proxy server using:

    ./gtm_proxy -D /opt/pgxl/data/gtm_proxy1
or
    ./gtm_ctl -Z gtm_proxy -D /opt/pgxl/data/gtm_proxy1 -l logfile start

node2初始化:

[pgxl@localhost bin]$ ./initdb -D /opt/pgxl/data/coordinator2/ --nodename coordinator2
[pgxl@localhost bin]$ ./initdb -D /opt/pgxl/data/datanode2/ --nodename datanode2
[pgxl@localhost bin]$ ./initgtm -D /opt/pgxl/data/gtm_proxy2/ -Z gtm_proxy
The files belonging to this GTM system will be owned by user "pgxl".
This user must also own the server process.

creating directory /opt/pgxl/data/gtm_proxy2 ... ok
creating configuration files ... ok

Success. You can now start the GTM proxy server using:

    ./gtm_proxy -D /opt/pgxl/data/gtm_proxy2
or
    ./gtm_ctl -Z gtm_proxy -D /opt/pgxl/data/gtm_proxy2 -l logfile start

配置信息:

gtm节点配置(修改项):

[pgxl@localhost data_gtm]$ vi gtm.conf
nodename = 'gtm'                    
listen_addresses = '*'
keepalives_idle = 60		
keepalives_interval = 10	
keepalives_count = 10

node1节点配置(修改项):

[pgxl@localhost gtm_proxy1]$ vi gtm_proxy.conf
nodename = 'gtm_proxy1'                                 
                                                               
listen_addresses = '*'                 
port = 6661                                    
gtm_host = '192.168.100.199'                                 
gtm_port = 6666
keepalives_idle = 60
keepalives_interval = 10
keepalives_count = 10
[pgxl@localhost coordinator1]$ vi postgresql.conf 
listen_addresses = '*'
#gtm_host = 'localhost'                
gtm_port = 6661               
pgxc_node_name = 'coordinator1'  pooler_port = 6667
[pgxl@localhost coordinator1]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust
[pgxl@localhost datanode1]$ vi postgresql.conf
listen_addresses = '*'
port = 15432
#gtm_host = 'localhost' 
gtm_port = 6661             
pgxc_node_name = 'datanode1'
pooler_port = 6668
[pgxl@localhost datanode1]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust

node2节点配置(修改项):

[pgxl@localhost gtm_proxy2]$ vi gtm_proxy.conf
nodename = 'gtm_proxy2'                                 
                                                               
listen_addresses = '*'                 
port = 6662                                    
gtm_host = '192.168.100.199'                                 
gtm_port = 6666
keepalives_idle = 60
keepalives_interval = 10
keepalives_count = 10
[pgxl@localhost coordinator2]$ vi postgresql.conf 
listen_addresses = '*'
#gtm_host = 'localhost'                
gtm_port = 6662               
pgxc_node_name = 'coordinator2'  
pooler_port = 6667
[pgxl@localhost coordinator2]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust
[pgxl@localhost datanode2]$ vi postgresql.conf
listen_addresses = '*'
port = 15432
#gtm_host = 'localhost' 
gtm_port = 6662             
pgxc_node_name = 'datanode2'
pooler_port = 6668
[pgxl@localhost datanode2]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust

服务启动:

gtm节点:

[pgxl@localhost bin]$ export PGHOME=/opt/pgxl/
[pgxl@localhost bin]$ export PATH=$PGHOME/bin:$PATH
[pgxl@localhost bin]$ ./gtm_ctl start -Z gtm -D /opt/pgxl/data_gtm/
server starting
[pgxl@localhost bin]$ tail ../data_gtm/gtm.log 
1:139738148718336:2015-06-09 14:23:08.247 CST -LOG:  Starting GTM server at (*:6666) -- control file /opt/pgxl/data_gtm/gtm.control
LOCATION:  main, main.c:601
1:139738148718336:2015-06-09 14:23:08.247 CST -LOG:  Restoring last GXID to 10000
	
LOCATION:  GTM_RestoreTxnInfo, gtm_txn.c:2673
1:139738148718336:2015-06-09 14:23:08.247 CST -LOG:  Started to run as GTM-Active.
LOCATION:  main, main.c:682

node1节点:

[pgxl@localhost bin]$ export PGHOME=/opt/pgxl/
[pgxl@localhost bin]$ export PATH=$PGHOME/bin:$PATH
[pgxl@localhost bin]$ ./gtm_ctl start -Z gtm_proxy -D ../data/gtm_proxy1/
server starting
[pgxl@localhost bin]$ tail ../data/gtm_proxy1/gtm_proxy.log 
1:47078985160944:2015-06-08 23:27:22.567 PDT -LOG:  Starting GTM proxy at (*:6661)
LOCATION:  main, proxy_main.c:805
[pgxl@localhost bin]$ ./pg_ctl start -Z datanode -D ../data/datanode1/
[pgxl@localhost bin]$ LOG:  database system was shut down at 2015-06-08 22:35:18 PDT
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

[pgxl@localhost bin]$ ./pg_ctl start -Z coordinator -D ../data/coordinator1/
[pgxl@localhost bin]$ LOG:  database system was shut down at 2015-06-08 22:34:46 PDT
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

node2节点:

[pgxl@localhost bin]$ export PGHOME=/opt/pgxl/
[pgxl@localhost bin]$ export PATH=$PGHOME/bin:$PATH
[pgxl@localhost bin]$ ./gtm_ctl start -Z gtm_proxy -D ../data/gtm_proxy2/
server starting
[pgxl@localhost bin]$ tail ../data/gtm_proxy2/gtm_proxy.log 
1:47078985160944:2015-06-08 23:27:22.567 PDT -LOG:  Starting GTM proxy at (*:6662)
LOCATION:  main, proxy_main.c:805
[pgxl@localhost bin]$ ./pg_ctl start -Z datanode -D ../data/datanode2/
[pgxl@localhost bin]$ LOG:  database system was shut down at 2015-06-08 22:35:18 PDT
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

[pgxl@localhost bin]$ ./pg_ctl start -Z coordinator -D ../data/coordinator2/
[pgxl@localhost bin]$ LOG:  database system was shut down at 2015-06-08 22:34:46 PDT
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

注册:

node1:

协调节点:

[pgxl@localhost bin]$ ./psql -p 5432 -d postgres
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.

postgres=# CREATE NODE coordinator2 WITH (TYPE='coordinator',HOST='192.168.100.202',PORT=5432);
CREATE NODE
postgres=# CREATE NODE datanode1 WITH (TYPE='datanode',HOST='192.168.100.201',PORT=15432);
CREATE NODE
postgres=# CREATE NODE datanode2 WITH (TYPE='datanode',HOST='192.168.100.202',PORT=15432);
CREATE NODE

postgres=# select * from pgxc_node;
  node_name   | node_type | node_port |    node_host    | nodeis_primary | nodeis_preferred |   node_id   
--------------+-----------+-----------+-----------------+----------------+------------------+-------------
 coordinator1 | C         |      5432 | localhost       | f              | f                |  1938253334
 coordinator2 | C         |      5432 | 192.168.100.202 | f              | f                | -2089598990
 datanode1    | D         |     15432 | 192.168.100.201 | f              | f                |   888802358
 datanode2    | D         |     15432 | 192.168.100.202 | f              | f                |  -905831925

select pgxc_pool_reload();
 pgxc_pool_reload 
------------------
 t
(1 row)

[pgxl@localhost bin]$

数据节点:

[pgxl@localhost bin]$ ./psql -p 15432 -d postgres
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.

postgres=# CREATE NODE coordinator1 WITH (TYPE='coordinator',HOST='192.168.100.201',PORT=5432);
CREATE NODE
postgres=# CREATE NODE coordinator2 WITH (TYPE='coordinator',HOST='192.168.100.202',PORT=5432);
CREATE NODE
postgres=# ALTER NODE datanode1 WITH (TYPE='datanode',HOST='localhost',PORT=15432);
ALTER NODE
postgres=# CREATE NODE datanode2 WITH (TYPE='datanode',HOST='192.168.100.202',PORT=15432);
CREATE NODE

postgres=# select * from pgxc_node;
  node_name   | node_type | node_port |    node_host    | nodeis_primary | nodeis_preferred |   node_id   
--------------+-----------+-----------+-----------------+----------------+------------------+-------------
 coordinator1 | C         |      5432 | 192.168.100.201 | f              | f                |  1938253334
 coordinator2 | C         |      5432 | 192.168.100.202 | f              | f                | -2089598990
 datanode1    | D         |     15432 | localhost       | f              | f                |   888802358
 datanode2    | D         |     15432 | 192.168.100.202 | f              | f                |  -905831925
(4 rows)

select pgxc_pool_reload();
 pgxc_pool_reload 
------------------
 t
(1 row)

[pgxl@localhost bin]$

node2:

协调节点:

[pgxl@localhost bin]$ ./psql -p 5432 -d postgres
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.

postgres=# CREATE NODE coordinator1 WITH (TYPE='coordinator',HOST='192.168.100.201',PORT=5432);
CREATE NODE
postgres=# CREATE NODE datanode1 WITH (TYPE='datanode',HOST='192.168.100.201',PORT=15432);
CREATE NODE
postgres=# CREATE NODE datanode2 WITH (TYPE='datanode',HOST='192.168.100.202',PORT=15432);
CREATE NODE

postgres=# select * from pgxc_node;
  node_name   | node_type | node_port |    node_host    | nodeis_primary | nodeis_preferred |   node_id   
--------------+-----------+-----------+-----------------+----------------+------------------+-------------
 coordinator2 | C         |      5432 | localhost       | f              | f                | -2089598990
 coordinator1 | C         |      5432 | 192.168.100.201 | f              | f                | 1938253334
 datanode1    | D         |     15432 | 192.168.100.201 | f              | f                |   888802358
 datanode2    | D         |     15432 | 192.168.100.202 | f              | f                |  -905831925

select pgxc_pool_reload();
 pgxc_pool_reload 
------------------
 t
(1 row)

[pgxl@localhost bin]$

数据节点:

[pgxl@localhost bin]$ ./psql -p 15432 -d postgres
psql (PGXL 9.2.0, based on PG 9.2.4 (Postgres-XL 9.2.0))
Type "help" for help.

postgres=# CREATE NODE coordinator1 WITH (TYPE='coordinator',HOST='192.168.100.201',PORT=5432);
CREATE NODE
postgres=# CREATE NODE coordinator2 WITH (TYPE='coordinator',HOST='192.168.100.202',PORT=5432);
CREATE NODE
postgres=# ALTER NODE datanode2 WITH (TYPE='datanode',HOST='localhost',PORT=15432);
ALTER NODE
postgres=# CREATE NODE datanode1 WITH (TYPE='datanode',HOST='192.168.100.202',PORT=15432);
CREATE NODE

postgres=# select * from pgxc_node;
  node_name   | node_type | node_port |    node_host    | nodeis_primary | nodeis_preferred |   node_id   
--------------+-----------+-----------+-----------------+----------------+------------------+-------------
 coordinator1 | C         |      5432 | 192.168.100.201 | f              | f                |  1938253334
 coordinator2 | C         |      5432 | 192.168.100.202 | f              | f                | -2089598990
 datanode2    | D         |     15432 | localhost       | f              | f                |  -905831925
 datanode1    | D         |     15432 | 192.168.100.201 | f              | f                |  888802358
(4 rows)

select pgxc_pool_reload();
 pgxc_pool_reload 
------------------
 t
(1 row)

[pgxl@localhost bin]$

搭建后效果:

node1:
postgres=# create table test(t1 int, t2 text);
LOG:  Will fall back to local snapshot for XID = 16757, source = 0, gxmin = 0, autovac launch = 0, autovac = 0, normProcMode = 0, postEnv = 1
CREATE TABLE
postgres=# insert into test values (1,'a');
INSERT 0 1
postgres=# insert into test values (2,'b');
INSERT 0 1
postgres=# execute direct on (datanode1) $$ select * from test $$;
 t1 | t2 
----+----
  1 | a
  2 | b
(2 rows)

postgres=# select * from test ;
 t1 | t2 
----+----
  1 | a
  2 | b
(2 rows)

postgres=# 

node2:
postgres=# select * from test ;
LOG:  Will fall back to local snapshot for XID = 16789, source = 0, gxmin = 0, autovac launch = 0, autovac = 0, normProcMode = 0, postEnv = 1
 t1 | t2 
----+----
  1 | a
  2 | b
(2 rows)

postgres=# execute direct on (datanode2) $$ select * from test $$;
 t1 | t2 
----+----
(0 rows)

postgres=# insert into test values (3,'c');
INSERT 0 1
postgres=# execute direct on (datanode2) $$ select * from test $$;
 t1 | t2 
----+----
  3 | c
(1 row)

postgres=# select * from test ;
 t1 | t2 
----+----
  1 | a
  2 | b
  3 | c
(3 rows)

postgres=#

node1:
postgres=# select * from test ;
 t1 | t2 
----+----
  1 | a
  2 | b
  3 | c
(3 rows)

postgres=# execute direct on (datanode1) $$ select * from test $$;
 t1 | t2 
----+----
  1 | a
  2 | b
(2 rows)

postgres=# execute direct on (datanode2) $$ select * from test $$;
 t1 | t2 
----+----
  3 | c
(1 row)

postgres=#

发现bug(最新代码没有,官网发布的tar包有bug,通过git下载暂时没有问题):

postgres=# alter node datanode2 with(TYPE='datanode', HOST='localhost', PORT=15432);
The connection to the server was lost. Attempting reset: LOG:  server process (PID 14999) was terminated by signal 11: Segmentation fault
DETAIL:  Failed process was running: alter node datanode2 with(TYPE='datanode', HOST='localhost', PORT=15432);
LOG:  terminating any other active server processes
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.
FATAL:  the database system is in recovery mode
Failed.
!> LOG:  all server processes terminated; reinitializing
LOG:  database system was interrupted; last known up at 2015-06-10 20:09:24 PDT
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  record with zero length at 0/18A6C40
LOG:  redo is not required
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

!> 
!> 
!> 
!>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏扎心了老铁

数据库表反向生成(一) MyBatis-generator与IDEA的集成

在Dao层,通过数据库表反向生成,可以节省我们很多的精力,把更多的精力投入复杂的业务中。 数据库表反向生成,指的是通过数据库如mysql中的库表schema生成...

1.2K80
来自专栏数据和云

返璞归真:如何判断一个初始化参数是否来自默认设置

? 杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主 Oracle初...

29470
来自专栏杨建荣的学习笔记

ORACLE 11g导入9i dump的问题及解决

因为系统迁移,需要将一部分的9i的数据导入11g的库里, 目标库是11.2.0.3.0 64位的环境。 导入dump的时候,有一个比较大的分区表,需要用导入分...

39970
来自专栏乐沙弥的世界

Linux 5 下安装MySQL 5.6(RPM方式)

    MySQL在很多领域被广泛使用,尤其是很多互联网企业,诸如腾讯,阿里等等。本文主要介绍在Linux 5下通过rpm方式来安装Mysql,这是比较简单的一...

16510
来自专栏数据库新发现

Oracle诊断案例-Job任务停止执行[最终版]

Last Updated: Friday, 2004-11-26 9:48 Eygle

14030
来自专栏乐沙弥的世界

ORA-02019 错误处理

       ORA-02019 错误提示是未找到远程数据库的连接说明,通常发生在本地数据库无法连接到远程数据库。引发该问题的原因很多,比如网络连接,连接方式(...

14610
来自专栏杨建荣的学习笔记

impdp异常中断导致的问题(r2第8天)

今天查看数据库的负载,发现cpu消耗异常的高。里面有不少dw的进程.但是查看impdp的进程却不存在。 查看datapump的进程情况,发现大量的job,但是状...

405110
来自专栏龙首琴剑庐

mybaits3整合spring总结

1、maven定义properties: <org.springframework.version>4.3.1.RELEASE</org.springframe...

38370
来自专栏程序员同行者

scrapy爬取伯乐在线文章

14850
来自专栏杨建荣的学习笔记

关于sysdba,sysoper,dba的区别(r3笔记第62天)

关于sysdba,sysoper,dba这些名词在工作中可能接触的比较多,如果接触的环境是服务器端的,sysdba可能是经常用到的。如果是数据库的维护工作,db...

29360

扫码关注云+社区

领取腾讯云代金券