您的位置:首页 > 数据库

Postgres-XC/XL/X2分布式数据库安装

2015-08-31 13:16 169 查看


功能介绍

Postgres-XC/XL/X2是一个开源项目。它提供了一个多主同步、透明的PostgreSQL的集群解决方案。不同于其它集群工具的特点是它在写入数据的时候具有很强的可扩展性,很好的引入了多主架构的集群环境概念。多主意味着在写入数据的时候不再受单一主节点的限制,在写入速度上将有很好的提升。

Postgres-XC有三个主要的组件,即GTM(Global
Transaction Manager)、Coordinator和Datanode。

其中GTM是最关键的一个组件,提供统一的事务处理管理和透明的组件控制。该事务管理技术是基于MVCC而来。任何一个Postgres-XC组件的处理管理都是基于单一的全局状态。

Coordinator是一个针对于应用程序的接口,犹如传统PostgreSQL数据库的后台进程。coordinator不存储实际的数据,只存储关于数据的描述性信息,实际的数据会被存储在datanode上。

Datanode存储实际的数据。表会在所有的datanode之间被分发或者被复制到所有的节点。由于datanode没有全局的数据库视图,所以它只会关心自己本地存储的数据。coordinator对接收的语句进行检查描述,然后重新组装后在有关的datanode上执行。再接着根据需要将数据转储到其它的datanode上。 

系统规划

先准备5台机器。1台作GTM、1台作GTM_Standby、剩下的3台作为Coordinator和Datanode节点。

操作系统信息为:

[root@localhost ~]# cat /etc/issue

CentOS release 6.3 (Final)

Kernel \r on an \m

[root@localhost ~]# uname -a

Linux localhost.localdomain
2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64
GNU/Linux

 

安装用户:   pgxc

安装根目录: /home/pgxc

 

IP资源分配如下:

功能
主机名
IP地址
Global
Transaction Manager

gtm

192.168.18.164

Global
Transaction Manager Standby

gtm_standby

192.168.18.165

Coordinator1/Datanode1/GTM
Proxy

cd1

192.168.18.166

Coordinator2/Datanode2/GTM
Proxy

cd2

192.168.18.167

Coordinator3/Datanode3/GTM
Proxy

cd3

192.168.18.168

 

安装存储目录:

主机名
目录
gtm

~/gtm

gtm_standby

~/ gtm

cd1

~/ coordinator   ~/datanode    ~/
coordinator_s    ~/datanode_s

cd2

~/ coordinator   ~/datanode    ~/ coordinator_s    ~/datanode_s

cd3

~/ coordinator   ~/datanode    ~/ coordinator_s    ~/datanode_s

 

端口规划:

主机名
端口
gtm

6666

gtm_standby

6666

datanode1/datanode2_s

15432    

datanode2/datanode3_s

15433    

datanode3/datanode1_s

15434    

coordinator1/coordinator2_s

5432

coordinator2/coordinator3_s

5433

coordinator3/coordinator4_s

5434

coordinator1
poolerPorts

20010

coordinator2
poolerPorts

20011

coordinator3
poolerPorts

20012

datanode1
poolerPorts

20013

datanode2
poolerPorts

20014

datanode3
poolerPorts

20015

 

分布式数据库软件信息:postgres-xl-v9.2-src.tar

 注意:[/b]分布式数据库的环境搭建、安装、维护等均在数据库所在的主机上进行操作,即gtm、gtm_standby、cd1、cd2、cd3。

分布式数据库环境准备 (所有主机)

1.       
安装依赖包

在数据库安装前需要确认如下依赖包已经安装,推荐在安装操作系统时使用完全安装,完全安装将会包含postgres所需的依赖包。需要的依赖包如下:

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

2.       
新建pgxc用户

       因为分布式数据库是不能再root用户下运行的,所以在每台机器上都新建pgxc用户以及用户组:

       #groupadd pgxc           ----新建用户组

       #useradd -g pgxc pgxc     ----新建用户

       #passwd pgxc             ----修改新用户密码(为了后续方便操作,我将所有密码都设置为pgxc)

3.       
添加所有主机的域名信息

       因为在使用pgxc_ctl的配置信息中会涉及,本次以192.168.18.160~168为例:

       #vi /etc/hosts

127.0.0.1  
localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        
localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.18.164 
gtm

192.168.18.165 
gtm_standby

192.168.18.166 
cd1

192.168.18.167 
cd2

192.168.18.168 
cd3

 

并且,以GTM为例,在各自的主机上进行如下设置:

[root@localhost ~]# hostname gtm

[root@localhost ~]# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=gtm

 

4.       
建立信任关系

       在所有机器上执行如下命令

       # su - pgxc

       $ssh-keygen -t rsa

   ---提示需要输入时,全部回车即可,执行完该命令后将会生成id_rsa.pub文件。

    选择其中一台机器(任意一台,以164为例),以pgxc用户在其上执行如下命令,根据提示输入密码等信息,生成authorized_keys文件:

$cd ~/.ssh

$ scp pgxc@192.168.18.164:/home/pgxc/.ssh/id_rsa.pub /home/pgxc/.ssh/authorized_keys

$ scp pgxc@192.168.18.165:/home/pgxc/.ssh/id_rsa.pub /home/pgxc/.ssh/temp

$cat temp >> authorized_keys

$ scp pgxc@192.168.18.166:/home/pgxc/.ssh/id_rsa.pub /home/pgxc/.ssh/temp

$cat temp >> authorized_keys

$ scp pgxc@192.168.18.167:/home/pgxc/.ssh/id_rsa.pub /home/pgxc/.ssh/temp

$cat temp >> authorized_keys

$ scp pgxc@192.168.18.168:/home/pgxc/.ssh/id_rsa.pub /home/pgxc/.ssh/temp

$cat temp >> authorized_keys

    把authorized_keys拷贝到其他主机上

$scp ./authorized_keys pgxc@192.168.18.165:/home/pgxc/.ssh/

$scp ./authorized_keys pgxc@192.168.18.166:/home/pgxc/.ssh/

$scp ./authorized_keys pgxc@192.168.18.167:/home/pgxc/.ssh/

$scp ./authorized_keys pgxc@192.168.18.168:/home/pgxc/.ssh/

    进行如上操作后便建立起了所有机器间的信任关系,可以用如下方式进行测试信任关系是否建立成功,在pgxc用户下执行如下命令:

$ssh
pgxc@192.168.18.165 --如果不再提示输入密码,表示信任关系建立成功

分布式数据库安装(所有主机)

(1)  
安装数据库

目前本数据库采用的是编译安装的方式(也可以使用rpm安装)。

首先将postgres-xl-v9.2-src.tar.gz拷贝到指定目录,然后进行解压,下面以拷贝到/home/pgxc目录下为例,在所有机器上进行如下操作:

         [pgxc@gtm
~]$ tar -zxf postgres-xl-v9.2-src.tar.gz

         [pgxc@gtm
~]$ cd postgres-xl

         [pgxc@gtm
postgres-xl]$ ./configure 
--prefix=/home/pgxc/pgxl  ---指定安装路径

[pgxc@gtm postgres-xl]$ make

[pgxc@gtm postgres-xl]$ make install

        

         [pgxc@gtm
postgres-xl]$ cd contrib/

[pgxc@gtm postgres-xl]$ make

         [pgxc@gtm
postgres-xl]$ make install 

 

(2)  
添加环境变量

在/home/pgxc/.bashrc中添加如下环境变量,添加完成后以pgxc用户执行source命令使其立即生效。

         export
PGHOME=/home/pgxc/pgxl

export PGUSER=pgxc

export
LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

export
PATH=$PGHOME/bin:$PATH

        

[pgxc@gtm postgres-xl]$ source ~/.bashrc

 

(3)  
放开防火墙限制

使用root权限,在所有数据库服务器上进行放开防火墙限制操作。

关闭防火墙的命令如下:

                   ---永久关闭

#chkconfig iptables on   --重启后生效

                   --暂时关闭

#service iptables stop    --重启后失效

 

使用端口放通的方法如下:

[root@cd2 ~]# vi /etc/sysconfig/iptables

增加如下信息:

-A OUTPUT -p tcp --sport 5432 -j ACCEPT

-A INPUT -p tcp --dport 5432 -j ACCEPT

-A OUTPUT -p tcp --sport 5433 -j ACCEPT

-A INPUT -p tcp --dport 5433 -j ACCEPT

-A OUTPUT -p tcp --sport 5434 -j ACCEPT

-A INPUT -p tcp --dport 5434 -j ACCEPT

-A OUTPUT -p tcp --sport 15432 -j ACCEPT

-A INPUT -p tcp --dport 15432 -j ACCEPT

-A OUTPUT -p tcp --sport 15433 -j ACCEPT

-A INPUT -p tcp --dport 15433 -j ACCEPT

-A OUTPUT -p tcp --sport 15434 -j ACCEPT

-A INPUT -p tcp --dport 15434 -j ACCEPT

-A OUTPUT -p tcp --sport 20010 -j ACCEPT

-A INPUT -p tcp --dport 20010 -j ACCEPT

-A OUTPUT -p tcp --sport 20011 -j ACCEPT

-A INPUT -p tcp --dport 20011 -j ACCEPT

-A OUTPUT -p tcp --sport 20012 -j ACCEPT

-A INPUT -p tcp --dport 20012 -j ACCEPT

-A OUTPUT -p tcp --sport 20013 -j ACCEPT

-A INPUT -p tcp --dport 20013 -j ACCEPT

-A OUTPUT -p tcp --sport 20014 -j ACCEPT

-A INPUT -p tcp --dport 20014 -j ACCEPT

-A OUTPUT -p tcp --sport 20015 -j ACCEPT

-A INPUT -p tcp --dport 20015 -j ACCEPT

-A OUTPUT -p tcp --sport 20016 -j ACCEPT

-A INPUT -p tcp --dport 20016 -j ACCEPT

:wq!

[root@cd2 ~]# service iptables restart

 

(4)  
配置节点信息

选择一个主机,以GTM为例,进入/home/pgxc/postgres-xl/contrib/pgxc_ctl目录中,执行pgxc_ctl命令:

         [pgxc@gtm_standby
pgxc_ctl]$ ./pgxc_ctl

Installing pgxc_ctl_bash script as /home/pgxc/pgxc_ctl/pgxc_ctl_bash.

ERROR: File "/home/pgxc/pgxc_ctl/pgxc_ctl.conf"
not found or not a regular file. No such file or directory

Installing pgxc_ctl_bash script as /home/pgxc/pgxc_ctl/pgxc_ctl_bash.

Reading configuration using /home/pgxc/pgxc_ctl/pgxc_ctl_bash
--home /home/pgxc/pgxc_ctl --configuration /home/pgxc/pgxc_ctl/pgxc_ctl.conf

Finished to read configuration.

  
******** PGXC_CTL START ***************

Current directory: /home/pgxc/pgxc_ctl

PGXC prepare    ---执行该命令将会生成一份配置文件模板

PGXC ^C

         pgxc_ctl有自己的工作目录,一般为$HOME/pgxc_ctl/。在该目录下存有刚才生成的配置模板文件pgxc_ctl.conf以及一些日志信息。
  在pgxc_ctl.conf中配置需要安装的节点信息。

修改完成后,执行命令初始化所有数据库:

$pgxc_ctl  -c pgxc_ctl.conf init all    --初始化完成后会自动启动

         初始化完成后需要重启整个集群:

         $pgxc_ctl
 -c pgxc_ctl.conf stop all   ---停止整个分布式集群

$pgxc_ctl  -c pgxc_ctl.conf start all   --启动整个分布式集群

 

注意:初始化信息如果返回错误,需要检查错误原因,常见错误时端口冲突、网络不通等待,请仔细检查。然后在所有主机上,停止运行的GTM进程和Postgres进程,并且删除安装文件/home/pgxc/pgxc。修改配置文件后重新初始化和重新启动。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: