前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原 Postgresql-XL安装部署

原 Postgresql-XL安装部署

作者头像
王果壳
发布2018-05-17 11:48:51
3.4K0
发布2018-05-17 11:48:51
举报
文章被收录于专栏:王硕

机器准备:

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、解压源码

代码语言:javascript
复制
tar xvf postgres-xl-v9.2-src.tar.gz

        3、编译安装

代码语言:javascript
复制
./configure --prefix=/opt/pgxl
make
make install

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

代码语言:javascript
复制
'/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

解决方法:

代码语言:javascript
复制
#yum install docbook-style-dsssl
#find / -name collateindex.pl
/usr/bin/collateindex.pl
#cp /usr/bin/collateindex.pl /bin/

节点部署:

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

代码语言:javascript
复制
[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初始化:

代码语言:javascript
复制
[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初始化过程一致,这里就不多赘述了):

代码语言:javascript
复制
[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初始化:

代码语言:javascript
复制
[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节点配置(修改项):

代码语言:javascript
复制
[pgxl@localhost data_gtm]$ vi gtm.conf
nodename = 'gtm'                    
listen_addresses = '*'
keepalives_idle = 60		
keepalives_interval = 10	
keepalives_count = 10

node1节点配置(修改项):

代码语言:javascript
复制
[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
代码语言:javascript
复制
[pgxl@localhost coordinator1]$ vi postgresql.conf 
listen_addresses = '*'
#gtm_host = 'localhost'                
gtm_port = 6661               
pgxc_node_name = 'coordinator1'  pooler_port = 6667
代码语言:javascript
复制
[pgxl@localhost coordinator1]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust
代码语言:javascript
复制
[pgxl@localhost datanode1]$ vi postgresql.conf
listen_addresses = '*'
port = 15432
#gtm_host = 'localhost' 
gtm_port = 6661             
pgxc_node_name = 'datanode1'
pooler_port = 6668
代码语言:javascript
复制
[pgxl@localhost datanode1]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust

node2节点配置(修改项):

代码语言:javascript
复制
[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
代码语言:javascript
复制
[pgxl@localhost coordinator2]$ vi postgresql.conf 
listen_addresses = '*'
#gtm_host = 'localhost'                
gtm_port = 6662               
pgxc_node_name = 'coordinator2'  
pooler_port = 6667
代码语言:javascript
复制
[pgxl@localhost coordinator2]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust
代码语言:javascript
复制
[pgxl@localhost datanode2]$ vi postgresql.conf
listen_addresses = '*'
port = 15432
#gtm_host = 'localhost' 
gtm_port = 6662             
pgxc_node_name = 'datanode2'
pooler_port = 6668
代码语言:javascript
复制
[pgxl@localhost datanode2]$ vi pg_hba.conf
host    all             all             192.168.100.0/24            trust

服务启动:

gtm节点:

代码语言:javascript
复制
[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
代码语言:javascript
复制
[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节点:

代码语言:javascript
复制
[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节点:

代码语言:javascript
复制
[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:

协调节点:

代码语言:javascript
复制
[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]$

数据节点:

代码语言:javascript
复制
[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:

协调节点:

代码语言:javascript
复制
[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]$

数据节点:

代码语言:javascript
复制
[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]$

搭建后效果:

代码语言:javascript
复制
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下载暂时没有问题):

代码语言:javascript
复制
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

!> 
!> 
!> 
!>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档