收藏 分享(赏)

centos-部署pgxl集群.pptx

上传人:天天快乐 文档编号:579789 上传时间:2018-04-12 格式:PPTX 页数:42 大小:1.26MB
下载 相关 举报
centos-部署pgxl集群.pptx_第1页
第1页 / 共42页
centos-部署pgxl集群.pptx_第2页
第2页 / 共42页
centos-部署pgxl集群.pptx_第3页
第3页 / 共42页
centos-部署pgxl集群.pptx_第4页
第4页 / 共42页
centos-部署pgxl集群.pptx_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、CentOS 部署PGXL集群,目录,(一) PGXL背景介绍及编译安装(二) 安装PGXL集群(三) PGXL集群HA高可用实现方案说明(四) 给PGXL集群添加一个新节点(五) PGXL常见问题解答,PGXL背景介绍,PGXL全称Postgres-xl,是一个基于PostgreSQL数据库的横向扩展开源数据库集群,具有足够的灵活性来处理不同的数据库工作负载,如: OLTP 写频繁的业务、需要MPP并行性商业智能、操作数据存储、混合业务工作环境、多租户服务提供商托管环境等。,描述,产品主要分为3大模块:GTM模块:全称为Global Transaction Monitor,主要负责保持全局(

2、集群范围内)事务的一致性,控制多个程序的并发访问;Coordinator模块:协调管理用户会话,和GTM、Datanode节点进行交互。它能够将用户提交的SQL解析为执行计划,并将执行计划序列化后,发送给查询计划涉及到的每一个节点 。Datanode模块:每个表数据实际存储的节点,数据分布方式可以在建表时由DBA指定。用户可直接连接某个Datanode节点查看一张表的部分数据。可通过流复制的方式备份某个Datanode的数据。,下载PGXL源代码,进入http:/www.postgres-xl.org/download/页面,下载pgxl的源代码。本文已v9.2版本作为演示。,编译PGXL的源

3、代码,yum -y install gcc perl-ExtUtils-Embed readline-devel zlib-devel openssl-devel pam pam-devel libxml2-devel libxslt-devel tcl tcl-devel python-devel docbook-style-dsssl flex bison openjade,安装PGXL编译所需的库文件:,使用ftp将pgxl9.2的源代码上传到服务器上,再使用tar zxvf postgres-xl-v9.2-src.tar.gz 命令解压缩。将解压缩后的目录放在目录: /home/pg

4、xl/postgres-xl进入该目录,执行检查命令: ./configure -prefix=/home/pgxl/pgxl9.2 -with-pgport=11921 -with-perl -with-tcl -with-python -with-openssl -with-pam -without-ldap -with-libxml -with-libxslt -enable-thread-safety -enable-debug -enable-cassert如果输出如下,则表示检查通过:,检查编译环境是否具备要求:,编译安装:,编译命令: gmake world安装命令: gmake

5、 install-world 完成后,可在/home/pgxl/pgxl9.2 目录下看到数据库的执行程序,目录,(一) PGXL背景介绍及编译安装(二) 安装PGXL集群(三) PGXL集群HA高可用实现方案说明(四) 给PGXL集群添加一个新节点(五) PGXL常见问题解答,PGXL集群安装说明,本章节介绍如何安装PGXL集群,计划安装2个GTM节点、2个GTM代理节点、2个Coordinate节点、4个Datanode节点。由于硬件环境有限,本文在一台机器上安装所有节点,已目录的方式划分。建议在生成环境上安装时,每个节点最好有一台独立的主机。,说明,将第一章节中编译好的程序拷贝到要安装P

6、GXL机器的主机上(要和编译机器上的操作系统版本一致):,修改当前用户的环境变量配置文件.bash_profile文件(修改后使用source .bash_profile可立即生效):,GTM节点安装说明(一),创建好GTM个节点的目录,如下:,/home/sa1/pgxl9.2/pgxl/bin/initgtm -Z gtm -D /home/sa1/pgxl9.2/gtm13921/home/sa1/pgxl9.2/pgxl/bin/initgtm -Z gtm -D /home/sa1/pgxl9.2/gtm13922/home/sa1/pgxl9.2/pgxl/bin/initgtm

7、-Z gtm_proxy -D /home/sa1/pgxl9.2/gtm14921/home/sa1/pgxl9.2/pgxl/bin/initgtm -Z gtm_proxy -D /home/sa1/pgxl9.2/gtm14922,执行如下4条命令,初始化各个GTM节点:,GTM节点安装说明(二),GTM的节点输出信息如下,即表示初始化成功:,GTM_Proxy的节点输出信息如下,即表示初始化成功:,GTM节点安装说明(三),修改gtm13921节点配置文件gtm.conf :,修改gtm13922节点配置文件gtm.conf :,如果还要再增加一个GTM节点,则配置与gtm13922

8、类似。,GTM节点安装说明(四),修改gtm14921节点配置文件gtm_proxy.conf :,其它gtm14922节点配置和它相同,只是需要修改nodename、port等属性值即可。Gtm_port端口要一致,使用13921。至此,GTM个节点配置已完毕。,GTM节点安装说明(五),使用命令,逐一启动各个GTM节点:,/home/sa1/pgxl9.2/pgxl/bin/gtm_ctl start -Z gtm -D /home/sa1/pgxl9.2/gtm13921/home/sa1/pgxl9.2/pgxl/bin/gtm_ctl start -Z gtm -D /home/sa

9、1/pgxl9.2/gtm13922/home/sa1/pgxl9.2/pgxl/bin/gtm_ctl start -Z gtm_proxy -D /home/sa1/pgxl9.2/gtm14921/home/sa1/pgxl9.2/pgxl/bin/gtm_ctl start -Z gtm_proxy -D /home/sa1/pgxl9.2/gtm14922,如果有某个节点没有启动,则可通过查看其目录下的日志来分析原因。,Datanode节点安装说明(一),创建好Datanode个节点的目录,如下:,执行如下4条命令,初始化各个Datanode节点的数据库:,/home/sa1/pgx

10、l9.2/pgxl/bin/initdb -D /home/sa1/pgxl9.2/datan12921 -E UTF8 -locale=C -U postgres -W -nodename datan12921/home/sa1/pgxl9.2/pgxl/bin/initdb -D /home/sa1/pgxl9.2/datan12922 -E UTF8 -locale=C -U postgres -W -nodename datan12922/home/sa1/pgxl9.2/pgxl/bin/initdb -D /home/sa1/pgxl9.2/datan12923 -E UTF8 -

11、locale=C -U postgres -W -nodename datan12923/home/sa1/pgxl9.2/pgxl/bin/initdb -D /home/sa1/pgxl9.2/datan12924 -E UTF8 -locale=C -U postgres -W -nodename datan12924在命令执行过程中,需要输入两次数据库超级管理员用户的密码,如果输错,则初始化失败。输出的信息如附件initdb.log,则表示初始化成功。4条命令操作过程相同,不再详述。,Datanode节点安装说明(二),修改Datanode节点的postgresql.conf配置文件,

12、如附件postgresql.conf,为datan12921 节点的配置文件:,1、其他datanode节点配置与它类似,只需要修改port、 gtm_host、 gtm_port、 pgxc_node_name等配置项。2、如果主机的性能较强的话,可根据实际情况修改一些与内存相关的参数,如shared_buffers 、 temp_buffers、 work_mem等。,修改Datanode节点的pg_hba.conf ,增加如下配置(4个datanode节点配置相同):,host all all 0.0.0.0/0 md5,本文因为是在一台机器上配置PGXL集群,所以信任地址只有127.0

13、.0.1/32,如果你是在多台机器上部署,则需要把所有节点的IP都加进来(包括Coordinate节点的),举例如下:host all all 192.168.11.201/32 trust,Datanode节点安装说明(三),使用如下命令,启动各个Datanode节点:,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12921/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12

14、922/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12923/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12924,查看pg_log目录下的日志,发现打印如下,即表示启动成功:2014-11-26 16:41:26.414 CST,2527,54759236.9df,1,2014-11-26 16:41:26 CST,0,LOG,00000,database system

15、is ready to accept connections,reaper, postmaster.c:2619,“也可通过命令:/home/sa1/pgxl9.2/pgxl/bin/psql -h 127.0.0.1 -p 12921 -U postgres postgres连接上去,查看每个节点信息。至此,Datanode节点安装完毕。,Coordinate节点安装说明(一),创建好各个Coordinate节点的目录,如下:,执行如下2条命令,初始化各个Coordinate节点的数据库(初始化过程和Datanode初始化类似):,/home/sa1/pgxl9.2/pgxl/bin/ini

16、tdb -D /home/sa1/pgxl9.2/coord11921 -E UTF8 -locale=C -U postgres -W -nodename coord11921/home/sa1/pgxl9.2/pgxl/bin/initdb -D /home/sa1/pgxl9.2/coord11922 -E UTF8 -locale=C -U postgres -W -nodename coord11922在命令执行过程中,需要输入两次数据库超级管理员用户的密码,如果输错,则初始化失败。输出的信息如附件initdb.log,则表示初始化成功。2条命令操作过程相同,不再详述。,Coordi

17、nate节点安装说明(二),修改Coordinate节点的postgresql.conf配置文件,如附件postgresql.conf,为coord11921节点的配置文件:,1、其他datanode节点配置与它类似,只需要修改port、 gtm_host、 gtm_port、 pgxc_node_name等配置项。2、如果主机的性能较强的话,可根据实际情况修改一些与内存相关的参数,如shared_buffers 、 temp_buffers、 work_mem等。,修改Coordinate节点的pg_hba.conf ,增加如下配置(2个Coordinate节点配置相同):,host all

18、 all 0.0.0.0/0 md5,本文因为是在一台机器上配置PGXL集群,所以信任地址只有127.0.0.1/32,如果你是在多台机器上部署,则需要把所有节点的IP都加进来(包括Datanode节点的),举例如下:host all all 192.168.11.201/32 trust,Coordinate节点安装说明(三),使用如下命令,启动各个Coordinate节点:,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z coordinator -D /home/sa1/pgxl9.2/coord11921/home/sa1/pgxl9.2/pgxl/

19、bin/pg_ctl start -Z coordinator -D /home/sa1/pgxl9.2/coord11922,查看pg_log目录下的日志,发现打印如下,即表示启动成功:2014-11-26 17:22:16.835 CST,2788,54759bc8.ae4,1,2014-11-26 17:22:16 CST,0,LOG,00000,database system is ready to accept connections,reaper, postmaster.c:2619,“,使用psql命令,连接到其中的一个Coordinate节点上,查看信息:,/home/sa1/

20、pgxl9.2/pgxl/bin/psql -h 127.0.0.1 -p 11921 -U postgres postgres,初始化Coordinate、Datanode节点的连接信息,在psql中查询pgxc_node表的信息,如下:,使用SQL语句,将其它的Coordinate和Datanode节点添加到pgxc_node表中(已有的这条记录只能修改):,alter node coord11921 with (type=coordinator, host=127.0.0.1, port=11921);create node coord11922 with (type=coordinat

21、or, host=127.0.0.1, port=11922);create node datan12921 with (type=datanode, host=127.0.0.1, port=12921, primary=false);create node datan12922 with (type=datanode, host=127.0.0.1, port=12922, primary=false);create node datan12923 with (type=datanode, host=127.0.0.1, port=12923, primary=false);create

22、node datan12924 with (type=datanode, host=127.0.0.1, port=12924, primary=false);,以上语句需要分别连接到每个Coordinate、Datanode节点上执行一遍,执行完毕后pgxc_node表信息如下:,操作每个Coordinate、Datanode时,需要先看已存在的记录信息,然后使用alter node命令修改,其它使用create node命令增加。,测试PGXL集群(一),使用psql命令连接到一个Coordinate节点,创建一个表test1,如下:,使用psql命令连接到另一个Coordinate节点,

23、查看test1数据,如下:,测试PGXL集群(二),使用psql命令分别连接到一个Datanode节点,查看表test1的数据,如下:,至此,PGXL集群就可以正常使用啦!,目录,(一) pgxl背景介绍及编译安装(二) 安装pgxl集群(三) pgxl集群HA高可用实现方案说明(四) 给pgxl集群添加一个新节点(五) pgxl常见问题解答,PGXL集群高可用实现方案说明,正常的PGXL集群包含了3大模块集群:GTM、Coordinator、Datanode。为了保证PGXL集群的正常使用,就必须保证每个模块是可以做到正常的冷(热)备份的,并且可通过具体的方案做到切换。,说明,策略说明: 如

24、上节所述,GMT节点可部署多个,还可通过部署GTM PROXY模块来减轻GMT节点压力,从而达到高可用 。,策略说明: 如上节所述,Coordinator节点在部署时需要安装多个,每个Coordinator节点访问的内容是相同的,所以可通过开源的LVS+Keepalived框架做到对Coordinator节点的实时侦测、故障切换方案,本文就不在多述。,策略说明: Datanode可部署多个,其中的数据可通过REPLICATION、 HASH等方式存储存储,如果是REPLICATION方式,则每个Datanode上的数据是一致的,自然可满足高可用。但如果是其它的数据分布方式,则某个Datanod

25、e节点宕机会导致整个PGXL集群不可用,本文介绍下Datanode的高可用部署方案。,Datanode节点高可用方案说明(一),修改datan12921节点的pg_hba.conf文件,增加如下一行配置(我是在本机做备份,如果是不同机器,则使用其IP):,PGXL是基于Postgresql项目开发而来,因此它可以兼容很多Postgresql的插件、实现方案等。Postgresql从v9.0版本开始就支持流复制方式备份数据,因此我们可对Datanode节点使用Postgresql的异步流复制方式做备份。如果原来的Datanode出现异常,可通过命令提升备份节点的权限,再修改每个Coordinat

26、or、Datanode中异常节点的链接IP、端口做到高可用。本文以“datan12921”节点为例:,说明,host replication postgres 127.0.0.1/32 trust,修改datan12921节点的postgresql.conf文件:,wal_level = hot_standbymax_wal_senders = 5wal_keep_segments = 20,重新启动datan12921节点:,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12921,

27、Datanode节点高可用方案说明(二),在备份机器上创建datan12921节点的备份存储目录(机器有限,本文就在同一台机器上操作了):,使用命令将datan12921节点的数据全量同步到备份节点目录(在备份机器上执行):,/home/sa1/pgxl9.2/pgxl/bin/pg_basebackup -D /home/sa1/pgxl9.2/datan12921_bak -Fp -Xs -P -h 127.0.0.1 -p 12921 -U postgres,给复制后的文件夹赋权(在备份机器上执行):,chmod 0700 /home/sa1/pgxl9.2/datan12921_bak

28、,Datanode节点高可用方案说明(三),删除复制过来的临时文件(在备份机器上执行) :,rm -f .s.PGPOOL.16921.lockrm -f .s.PGSQL.12921.lock,添加一个recovery.conf文件,内容如下(在备份机器上执行) :,-添加一个recovery.conf文件,内容如下:# -# PostgreSQL Recovery Config# -standby_mode = on primary_conninfo = host=127.0.0.1 port=12921 user=postgres password=postgresrecovery_ta

29、rget_timeline = latest,修改postgresql.conf文件(如果是同一台机器,则需要改端口,本文使用12941端口)(在备份机器上执行) :,port = 12941hot_standby = ongtm_host = 127.0.0.1,Datanode节点高可用方案说明(四),启动备份库,完成流复制(在备份机器上执行) :,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12921_bak,分别连接到Coordinator节点和datan12921节点,查看

30、数据:,连接到备份数据库,查看数据:,Datanode节点高可用方案说明(五),我们发现12921端口的数据和12941端口(备份库)的数据是一致的,连接到Coordinator节点,模拟插入4条数据:,Datanode节点高可用方案说明(六),分别连接datan12921节点和它的备份节点,查看数据变化情况:,表明通过Coordinator节点操作datan12921后,数据被同步到它的备份节点了。,Datanode节点高可用方案说明(六),使用命令模拟datan12921节点宕机行为:,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl stop -m fast -D /h

31、ome/sa1/pgxl9.2/datan12921,使用命令将datan12921的备份节点提升为主服务(在备份机器上执行) :,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl -D /home/sa1/pgxl9.2/datan12921_bak promote,使用命令修改所有Coordinator和Datanode节点上的pgxc_node表信息:,psql -h 127.0.0.1 -p 11921 postgres postgres -c alter node datan12921 with (type=datanode, host=127.0.0.1, por

32、t=12941)psql -h 127.0.0.1 -p 11921 postgres postgres -c select pgxc_pool_reload()“说明:前文例子中安装了2个Coordinator和4个Datanode节点,因此需要执行6次以上命令,每次执行时需要修改ip和端口。因为datan12921已宕机,所以需要在它的备机上执行。,Datanode节点高可用方案说明(七),连接到一个Coordinator节点,查看各个node节点信息:,分别连接两个Coordinator节点和Datanode节点,查看数据是否正常可用:,至此,我们已经完成了PGXL集群的Datanode

33、节点可靠性切换。下面我们来讲如何恢复Datanode节点。,Datanode节点高可用方案说明(八),PGXL的某个Datanode节点如果切换到备份节点,假设原有Datanode节点可以正常使用了,切记不可直接将其启动,否则会有致命错误,导致原有节点和备份节点间的时间点不一致( timeline 2 of the primary does not match recovery target timeline 1 ),而无法同步数据的问题,请按照以下方式操作:,说明,此时,原有的datan12921节点处于宕机状态,集群使用的是它的备份节点,我们先通过Coordinator节点插入一部分数据:

34、,需要修改原来的datan12921节点的postgresql.conf配置文件,让它到它的备份节点上同步最新的数据:,hot_standby=on,在原来的datan12921节点上增加recovery.conf配置文件,内容如下:,Datanode节点高可用方案说明(九),# -# PostgreSQL Recovery Config# -standby_mode = on primary_conninfo = host=127.0.0.1 port=12941 user=postgres password=postgresrecovery_target_timeline = latest

35、,启动datan12921节点,此时它是备机。登陆上去后查看数据是否从备份节点同步过来:,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl start -Z datanode -D /home/sa1/pgxl9.2/datan12921,说明:如果登录到datan12921上,发现数据没有同步过来,且日志中打印出“timeline 2 of the primary does not match recovery target timeline 1”时间线不一致无法复制,则需要将datan12921_bak/pg_xlog/目录中的文件全部拷贝到datan12921/pg_x

36、log目录中。然后再重启datan12921节点。,Datanode节点高可用方案说明(十),停止datan12921_bak节点上服务,并使用命令将datan12921节点权限提升:,/home/sa1/pgxl9.2/pgxl/bin/pg_ctl stop -m fast -D /home/sa1/pgxl9.2/datan12921_bak/home/sa1/pgxl9.2/pgxl/bin/pg_ctl -D /home/sa1/pgxl9.2/datan12921 promote,使用命令修改所有Coordinator和Datanode节点上的pgxc_node表信息:,psql

37、-h 127.0.0.1 -p 11921 postgres postgres -c alter node datan12921 with (type=datanode, host=127.0.0.1, port=12921)psql -h 127.0.0.1 -p 11921 postgres postgres -c select pgxc_pool_reload()”说明:前文例子中安装了2个Coordinator和4个Datanode节点,因此需要执行6次以上命令,每次执行时需要修改ip和端口。,连接到一个Coordinator节点,查看各个node节点信息:,OK,现在datan129

38、21节点又切换过来了,并可以正常使用了。此时,可以再往test1表中插入部分数据。,Datanode节点高可用方案说明(十一),因为datan12921是通过命令提升的权限,现在需要将它的配置文件也改回去,防止重启后又去从它的备份节点取数据:,修改postgresql.conf配置文件的属性:hot_standby = off,将datan12921_bak节点的配置文件recovery.done 改名为recovery.conf,然后再启动:,说明:为防止该备份节点日志中打印出“timeline 2 of the primary does not match recovery target

39、timeline 1”时间线不一致无法复制,最好将datan12921/pg_xlog/目录中的文件全部拷贝到datan12921_bak/pg_xlog目录中。然后再重启datan12921_bak节点。,使用psql命令,连接到备份节点,查看数据是否同步过来了:,OK,至此,Datanode节点高可用切换方案已全部完成。,目录,(一) pgxl背景介绍及编译安装(二) 安装pgxl集群(三) pgxl集群HA高可用实现方案说明(四) 给pgxl集群添加一个新节点(五) pgxl常见问题解答,目录,(一) pgxl背景介绍及编译安装(二) 安装pgxl集群(三) pgxl集群HA高可用实现方

40、案说明(四) 给pgxl集群添加一个新节点(五) pgxl常见问题解答,如何查看某个表在集群上的分布方式和分布字段:,pgxl常见问题解答(一),- R:REPLICATION(数据复制模式) 每个节点上都会存放相同的数据- N:ROUNDROBIN 数据循环存放方式 数据循环存放在各个节点上,跟SQL执行的结果有关系,如果是一条一条insert,则所有数据都会落在第一个节点,- 如果是insert into select 方式,则会数据会按固定的规则放在不同的节点(规则还不清楚)- H: HASH(column_name) 指定分布字段,使用字段值的hash值(如果建表时不指定,则默认我这种

41、方式,字段从第一个开始找,如果符合条件则为distribute hash字段)- M:MODULO(column_name) 指定分布字段,使用字段值的模来分布(所用字段必须为数值类型)select t1.*, t2.attname, t2.description from ( select a.*, b.schemaname, b.relname from pgxc_class a, pg_stat_user_tables b where a.pcrelid = b.relid and b.schemaname = public and b.relname = lkg_param_area)

42、t1 left join( select a.relid, a.schemaname, a.relname, b.attname, b.attnum, c.description from pg_stat_user_tables a, pg_attribute b left join pg_description c on b.attrelid = c.objoid and b.attnum = c.objsubid where a.relid = b.attrelid and b.attnum 0 and a.schemaname = public and a.relname = lkg_p

43、aram_area)t2on t1.pcrelid = t2.relid and t1.pcattnum = t2.attnum,如何操作某个Datanode节点上的数据:,pgxl常见问题解答(二),execute direct on (datan12921) select * from test1;或 execute direct on (datan12921) $select * from test1$;也可使用psql连接到某个Datanode节点上,再使用SQL操作,如果是增、删、改的操作,需要先执行:begin transaction read write;.执行完成后,再执行:e

44、nd; 命令提交。,如何写翻页语句:,pgxl常见问题解答(三),select * from(select PageT1.*, (ROW_NUMBER() over(order by a14163004542132,a14163004542196 ,a14163004542241,a14163004542296) AS RN from (select sum(a14163004542349_count), a14163004542296,a14163004542132,a14163004542196 ,a14163004542241 from rd14165529630814 group by a14163004542296,a14163004542132,a14163004542196 ,a14163004542241 ) PageT1) PageT2where PageT2.RN 0and PageT2.RN = 10order by RN注意:如果有ROW_NUMBER() over()语句,order by 一定要写在 over()语句中。否则多个order by字段会出现: ERROR: Postgres-XL does not currently support ORDER BY in subqueries。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经济财会 > 贸易

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报