PostgresXL使用说明文档.docx
- 文档编号:6208726
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:32
- 大小:724.32KB
PostgresXL使用说明文档.docx
《PostgresXL使用说明文档.docx》由会员分享,可在线阅读,更多相关《PostgresXL使用说明文档.docx(32页珍藏版)》请在冰豆网上搜索。
PostgresXL使用说明文档
Postgres-XL使用说明文档
一、知识点介绍
Postgres-XL是一个基于PostgreSQL数据库的横向扩展开源SQL数据库集群,XL代表eXtensibleLattice,即可扩展的PG“格子”之意,以下简称PGXL。
官方称其既适合写操作压力较大的OLTP应用,又适合读操作为主的大数据应用。
它的前身是Postgres-XC(简称PGXC),PGXC是在PG的基础上加入了集群功能,主要适用于OLTP应用;PGXL是在PGXC的基础上的升级产品,加入了一些适用于OLAP应用的特性,如MassivelyParallelProcessing(MPP)特性。
通俗的说PGXL的代码是包含PG代码的,使用PGXL安装PG集群并不需要单独安装PG。
总体感觉PGXL这款工具还是相当成熟的,有官方网站http:
//www.postgres-xl.org/,文档也比较完善,也有商业公司2ndQuadrant在支持。
上面这张图就是PGXL集群的架构图,来自官方网站。
所有节点中分为三种角色:
GTM(全局事务管理器)、Coordinator(协调器)和Datanode(数据节点)。
需要注意一点是图中的LoadBalance组件并不属于PGXL集群本身,需要其他负载均衡工具实现。
GTM:
全局事务控制节点,保证集群数据的一致性,与Coordinator节点和Datanode节点不断通信,是整个集群的核心节点,只存在一个,可以存在一个GTMStandby节点,对GTM实时备份。
GTM一旦故障,整个集群立刻无法访问,此时可以切换到GTMStandby节点上。
如果部署了GTMStandby节点,就应该同时部署GTMProxy,一般和Coordinator、Datanode部署在同一台服务器上。
GTMProxy的作用代理Coordinator和Datanode对GTM的访问,起到减轻GTM负载的作用,另外一个重要的作用是帮助完成GTM的故障切换,当GTM节点发生故障后,GTMStandby成为新的GTM,此时Coordinator和Datanode节点并不需要重新指定GTM地址,只需要GTMProxy重新连接到新的GTM地址即可。
Coordinator:
接收数据访问请求的节点,本质上是由PG后台进程组成。
接收的一条查询后,Coordinator节点执行查询计划,然后会根据查询数据涉及的数据节点将查询分发给相关的数据节点。
写入数据时,也会根据不同的数据分布策略将数据写入相关的节点。
可以说Coordinator节点上保存着集群的全局数据位置。
Coordinator节点可以任意扩展,各个节点之间除了访问地址不同以外是完全对等的,通过一个节点更新的数据可以在另一个节点上立刻看到。
每个Coordinator节点可以配置一个对应的standby节点,避免单点故障。
Datanode:
实际存取数据的节点,接收Coordinator的请求并执行SQL语句存取数据,节点之间也会互相通信。
一般的,一个节点上的数据并不是全局的,数据节点不直接对外提供数据访问。
一个表的数据在数据节点上的分布存在两种模式:
复制模式和分片模式,复制模式下,一个表的数据在指定的节点上存在多个副本;分片模式下,一个表的数据按照一定的规则分布在多个数据节点上,这些节点共同保存一份完整的数据。
这两种模式的选择是在创建表的时候执行CREATETABLE语句指定的,具体语法如下:
CREATETABLEtable_name(...)
DISTRIBUTEBY
HASH(col)|MODULO(col)|ROUNDROBIN|REPLICATION
TONODE(nodename1,nodename2...)
可以看到,如果DISTRIBUTEBY后面是REPLICATION,则是复制模式,其余则是分片模式,HASH指的是按照指定列的哈希值分布数据,MODULO指的是按照指定列的取摩运算分布数据,ROUNDROBIN指的是按照轮询的方式分布数据。
TONODE指定了数据分布的节点范围,如果没有指定则默认所有数据节点参与数据分布。
如果没有指定分布模式,即使用普通的CREATETABLE语句,PGXL会默认采用分片模式将数据分布到所有数据节点。
二、安装说明
1.下载安装包
https:
//www.postgres-xl.org/download/
当前最新版本为:
postgres-xl-9.5r1.6.tar.bz2
2.主机规划
服务器分配:
(手动配置分配)
操作系统
IP地址
主机名称
节点类型
其他
Kylin3.2
192.168.51.2
scada_server1
gtm,coordinator1,coordinator2
Kylin3.2
192.168.51.125
scada_server2
datanode1,datanode2
Kylin3.2
192.168.51.120
scada_server3
datanode3,datanode4
服务器分配:
(自动配置分配)
操作系统
IP地址
主机名称
节点类型
其他
Kylin3.2
192.168.51.2
scada_server1
gtm
Kylin3.2
192.168.51.125
scada_server2
coordinator1,datanode1,datanode2
Kylin3.2
192.168.51.120
scada_server3
coordinator2,datanode3,datanode4
各个节点划分:
(手动配置划分)
节点名称
所在机器
节点类型
端口号
连接池端口号
gtm
scada_server1@192.168.51.2
gtm
6666
coord1
scada_server1@192.168.51.2
coordinator
5301
6701
coord2
scada_server1@192.168.51.2
coordinator
5302
6702
dn1
scada_server2@192.168.51.125
datanode
5401
6801
dn2
scada_server2@192.168.51.125
datanode
5402
6802
dn3
scada_server3@192.168.51.120
datanode
5401
6801
dn4
scada_server4@192.168.51.120
datanode
5402
6802
各个节点划分:
(自动配置划分)
节点名称
所在机器
节点类型
端口号
连接池端口号
gtm
scada_server1@192.168.51.2
gtm
20001
gtm_pxy
scada_server2@192.168.51.125
gtm_proxy
20001
coord1
scada_server2@192.168.51.125
coordinator
20004
20010
gtm_pxy
scada_server3@192.168.51.120
gtm_proxy
20001
coord2
scada_server3@192.168.51.120
coordinator
20004
20010
dn1
scada_server2@192.168.51.125
datanode
20008
20012
dn2
scada_server2@192.168.51.125
datanode
20009
20013
dn3
scada_server3@192.168.51.120
datanode
20008
20012
dn4
scada_server4@192.168.51.120
datanode
20009
20013
3.修改节点Host配置
每个节点已root用户执行下面操作:
#vi/etc/hosts
在文件后面追加以下内容:
192.168.51.2scada_server1
192.168.51.125scada_server2
192.168.51.120scada_server3
4.安装依赖软件包
需要安装的依赖包:
openssh-clients,flex,bison,readline-devel,zlib-devel,openjade,docbook-style-dsssl,gcc
检查需要依赖的包:
#rpm-qa|grepxxx
如果上述命令能够输出包的信息则说明该包已经存在。
(kylin3.2操作系统自带上述所有包!
)
5.卸载系统自带PostgreSQL数据库
以root用户执行:
查询系统是否安装自带软件:
查询:
#rpm-qa|greppostgresql
若有则删除已安装软件:
删除:
#rpm-qa|greppostgresql|xargsrpm-e--nodeps
查询是否删除干净:
查询:
#rpm-qa|greppostgresql
6.每个节点添加postgres用户
以root用户执行:
建立组:
#groupaddpostgres
建立用户:
#useradd-m-d/home/postgrespostgres-gpostgres
初始化密码:
#passwdpostgres
输入密码:
abcd.135(举例)
注:
如果需要删除postgres用户,可以以root用户执行命令:
#userdel-rpostgres
7.配置无密码登录
既需要配置postgres用户,还需要配置root用户。
-------root用户-----------------------------------------
---scada_server1节点
[root@scada_server1~]#ssh-keygen
[root@scada_server1~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server1
[root@scada_server1~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server2
[root@scada_server1~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server3
---scada_server2节点
[root@scada_server2~]#ssh-keygen
[root@scada_server2~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server2
[root@scada_server2~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server1
[root@scada_server2~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server3
---scada_server3节点
[root@scada_server3~]#ssh-keygen
[root@scada_server3~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server3
[root@scada_server3~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server1
[root@scada_server3~]#ssh-copy-id-i~/.ssh/id_rsa.pubroot@scada_server2
--------用户postgres------------------------------------
---scada_server1节点
[postgres@scada_server1~]$ssh-keygen
[postgres@scada_server1~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server1
[postgres@scada_server1~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server2
[postgres@scada_server1~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server3
---scada_server2节点
[postgres@scada_server2~]$ssh-keygen
[postgres@scada_server2~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server2
[postgres@scada_server2~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server1
[postgres@scada_server2~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server3
---scada_server3节点
[postgres@scada_server3~]$ssh-keygen
[postgres@scada_server3~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server3
[postgres@scada_server3~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server1
[postgres@scada_server3~]$ssh-copy-id-i~/.ssh/id_rsa.pubpostgres@scada_server2
8.修改内核参数
执行:
#vi/etc/sysctl.conf
添加以下参数
kernel.sem=50100128256000501002560
执行:
#sysctl-p
使参数生效
执行:
#ipcs-ls
验证参数是否生效。
------SemaphoreLimits--------
maxnumberofarrays=2560
maxsemaphoresperarray=50100
maxsemaphoressystemwide=128256000
maxopspersemopcall=50100
semaphoremaxvalue=32767
9.配置防火墙
9.1关闭防火墙(以root用户执行)
#serviceiptablesstop
#chkconfigiptablesoff --重启后生效
9.2在防火墙中开放端口
具体需要开放的端口参加(主机规划部分),以5302为例:
使用这些命令来永久打开一个新端口(如TCP/5302)。
#sudofirewall-cmd--zone=public--add-port=5302/tcp--permanent
#sudofirewall-cmd--reload
注:
需要保证防火墙是开启的才能执行。
注:
查看防火墙状态命令:
systemctlstatusfirewalld
注:
开启防火墙:
systemctlstartfirewalld
注:
关闭防火墙:
systemctlstopfirewalld
10.关闭SELinux
查看SELinux状态,执行:
#/usr/sbin/sestatus-v
##如果SELinux status参数为enabled即为开启状态
永久关闭,执行:
#vi/etc/selinux/config --重启后生效
将SELINUX=enforcing改为SELINUX=disabled
11.安装Postgres-XL软件
11.1执行postgrex-xl软件安装
--scada_server1节点--
[root@scada_server1~]#cd/mytmp
[root@scada_server1mytmp]#tar-jxvfpostgres-xl-9.5r1.6.tar.bz2
[root@scada_server1mytmp]#chown-Rpostgres:
postgrespostgres-xl-9.5r1.6
[root@scada_server1mytmp]#su-postgres
[postgres@scada_server1~]$cd/mytmp/postgres-xl-9.5r1.6
[postgres@scada_server1postgres-xl-9.5r1.6]$./configure--prefix=/home/postgres/pgxl9.5
[postgres@scada_server1postgres-xl-9.5r1.6]$make
[postgres@scada_server1postgres-xl-9.5r1.6]$makeinstall
--安装拓展--
[postgres@scada_server1postgres-xl-9.5r1.6]$cdcontrib
[postgres@scada_server1contrib]$make
[postgres@scada_server1contrib]$makeinstall
--scada_server2节点--
[root@scada_server2~]#cd/mytmp
[root@scada_server2mytmp]#tar-jxvfpostgres-xl-9.5r1.6.tar.bz2
[root@scada_server2mytmp]#chown-Rpostgres:
postgrespostgres-xl-9.5r1.6
[root@scada_server2mytmp]#su-postgres
[postgres@scada_server2~]$cd/mytmp/postgres-xl-9.5r1.6
[postgres@scada_server2postgres-xl-9.5r1.6]$./configure--prefix=/home/postgres/pgxl9.5
[postgres@scada_server2postgres-xl-9.5r1.6]$make
[postgres@scada_server2postgres-xl-9.5r1.6]$makeinstall
--安装拓展--
[postgres@scada_server2postgres-xl-9.5r1.6]$cdcontrib
[postgres@scada_server2contrib]$make
[postgres@scada_server2contrib]$makeinstall
--scada_server3节点--
[root@scada_server3~]#cd/mytmp
[root@scada_server3mytmp]#tar-jxvfpostgres-xl-9.5r1.6.tar.bz2
[root@scada_server3mytmp]#chown-Rpostgres:
postgrespostgres-xl-9.5r1.6
[root@scada_server3mytmp]#su-postgres
[postgres@scada_server3~]$cd/mytmp/postgres-xl-9.5r1.6
[postgres@scada_server3postgres-xl-9.5r1.6]$./configure--prefix=/home/postgres/pgxl9.5
[postgres@scada_server3postgres-xl-9.5r1.6]$make
[postgres@scada_server3postgres-xl-9.5r1.6]$makeinstall
--安装拓展--
[postgres@scada_server3postgres-xl-9.5r1.6]$cdcontrib
[postgres@scada_server3contrib]$make
[postgres@scada_server3contrib]$makeinstall
11.2配置环境变量
修改三个服务器节点的环境变量,执行以下操作:
#su-postgres
#vi.bashrc
添加如下内容:
exportPGHOME=/home/postgres/pgxl9.5
exportPGUSER=postgres
exportLD_LIBRARY_PATH=$PGHOME/lib:
$LD_LIBRARY_PATH
exportPATH=$PGHOME/bin:
$PATH
效果如下图所示:
使环境变量生效:
#source~/.bashrc
验证环境变量是否生效:
pg_ctl--version
输出:
pg_ctl(PostgreSQL)9.5.8(Postgres-XL9.5r1.6)
11.3创建gtm、coordinator、datanode相关目录
--scada_server1节点--
[postgres@scada_server1~]$cd$PGHOME
[postgres@scada_server1pgxl9.5]$mkdirdata
[postgres@scada_server1pgxl9.5]$cddata
[postgres@scada_server1data]$mkdirgtm
[postgres@scada_server1data]$mkdircoord1
[postgres@scada_server1data]$mkdircoord2
--scada_server2节点--
[postgres@scada_ser
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PostgresXL 使用说明 文档