一、环境准备

1.1 机器准备


所有主机:配置ip、修改主机名,将所有节点ip和主机名一 一对应写入/etc/hosts文件。

[root@master ~]# tail -4 /etc/hosts
192.168.122.183 master
192.168.122.101 standby
192.168.122.206 segment1
192.168.122.89 segment2

效果要求:所有节点之间能够相互ping通。

1.2 系统环境配置(所有节点)

1.2.1 系统内核参数优化配置
修改文件/etc/sysctl.conf,使用sysctl -p命令即时生效。

[root@master ~]# sysctl -p
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2

1.2.2 修改Linux最大限制
追加到文件/etc/security/limits.conf即可。

[root@master ~]# tail -4 /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

1.2.3 设置磁盘预读扇区数

blockdev --setra 16384 /dev/vda1
blockdev --setra 16384 /dev/mapper/centos-root

并将命令写入/etc/rc.local。
1.2.4 调整优化磁盘I/O

echo deadline > /sys/block/vda/queue/scheduler

并写入/etc/rc.local。
1.2.5 创建数据库用户

[root@master ~]# groupadd -g 530 gpadmin
[root@master ~]# useradd -u 530 -g530 -m -d /home/gpadmin -s /bin/bash gpadmin
[root@master ~]# passwd gpadmin

更改用户 gpadmin 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

1.2.6 关闭防火墙和selinux

[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl mask firewalld
Created symlink from /etc/systemd/system/firewalld.service to /dev/null.
[root@master ~]# setenforce 0
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/'
/etc/selinux/config

1.2.7 创建安装目录(所有主机)

mkdir /opt/greenplum; chown -R gpadmin:gpadmin /opt/greenplum

1.2.8 时间同步
master主机:

yum -y install ntp;vim /etc/ntp.conf
restrict 192.168.122.0/24 mask 255.255.255.0 nomodify
server 127.127.1.0 iburst
fudge 127.127.1.0 stratum 3
注销#默认的server
systemctl start ntpd; systemctl enable ntpd

除master外所有主机:

yum -y install ntpdate
[root@segment1 ~]# ntpdate master
11 May 12:20:54 ntpdate[1213]: adjust time server 192.168.122.183 offset -0.006148 sec

二、安装部署Greenplum

2.1、master节点安装Greenplum

2.1.1下载greenplum(master主机)
地址:https://network.pivotal.io/products/pivotal-gpdb/#/releases/73874/file_groups/929
下载文件:greenplum database 5.7.0 binary install for rhel7

2.1.2安装greenplum(master主机)

拷贝下载的greenplum-db-5.7.0-rhel7-x86_64.zip到/tmp下,yum -y install unzip,用unzip解
压greenplum-db-5.7.0-rhel7-x86_64.zip。
注意,此时开始全部使用gpadmin用户操作!!!!!!!!!!!!!!!!
切换到gpadmin用户:su - gpadmin
切换到gpadmin用户家目录:cd
执行解压后的二进制文件 :./greenplum-db-5.7.0-rhel7-x86_64.bin

[root@master tmp]# unzip greenplum-db-5.7.0-rhel7-x86_64.zip
Archive: greenplum-db-5.7.0-rhel7-x86_64.zip
inflating: greenplum-db-5.7.0-rhel7-x86_64.bin
[root@master tmp]# su - gpadmin
上一次登录:五 5月 11 17:11:59 CST 2018从 192.168.122.152pts/4 上
[gpadmin@master ~]$ cd /tmp/
[gpadmin@master tmp]$ ./greenplum-db-5.7.0-rhel7-x86_64.bin

期间按照提示内容, 输入yes和安装目录/opt/greenplum/greenplum-db即可。

******************************************************************************
**
Do you accept the Pivotal Database license agreement? [yes|no]
******************************************************************************
**
yes
******************************************************************************
**
Provide the installation path for Greenplum Database or press ENTER to
accept the default installation path: /usr/local/greenplum-db-5.7.0
******************************************************************************
******************************************************************************
**
/opt/greenplum/greenplum-db

2.1.3检查安装情况

ls /opt/greenplum/greenplum-db -l
[gpadmin@master ~]$ ll /opt/greenplum/greenplum-db/
总用量 32
drwxr-xr-x 7 gpadmin gpadmin 4096 3月 30 22:41 bin
drwxr-xr-x 4 gpadmin gpadmin 37 3月 30 22:23 docs
drwxr-xr-x 2 gpadmin gpadmin 44 3月 30 22:24 etc
drwxr-xr-x 3 gpadmin gpadmin 20 3月 30 22:24 ext
-rw-rw-r-- 1 gpadmin gpadmin 743 5月 11 13:57 greenplum_path.sh
drwxr-xr-x 6 gpadmin gpadmin 4096 3月 30 22:24 include
drwxr-xr-x 7 gpadmin gpadmin 8192 3月 17 01:52 lib
drwxr-xr-x 8 gpadmin gpadmin 107 3月 26 12:02 pxf
drwxr-xr-x 2 gpadmin gpadmin 4096 3月 30 22:27 sbin
drwxr-xr-x 6 gpadmin gpadmin 68 5月 11 14:12 share

2.1.4 目录和文件说明

  • greenplum_path.sh:此文件包含Greenplum数据库的环境变量,请参阅设置Greenplum环境变量。
  • bin:此目录包含Greenplum数据库管理程序,此目录还包含PostgreSQL客户端和服务器程序,其中大部分也用于Greenplum数据库。
  • sbin:支持/内部脚本和程序。
  • docs:Greenplum数据库文档(PDF文件)。
  • etc:OpenSSL的示例配置文件。
  • ext:一些Greenplum数据库实用程序使用的捆绑程序(如Python)。
  • include:Greenplum数据库的C语言头文件。
  • lib:Greenplum数据库和PostgreSQL库文件。
  • share:Greenplum数据库的共享文件。

2.2 在所有节点安装Greenplum

2.2.1准备安装节点文件

cd ; mkdir conf
[gpadmin@master ~]$ cat conf/all_host
master
standby
segment1
segment2
[gpadmin@master ~]$ cat conf/segment
segment1
segment2

2.2.2建立节点服务器间的信任

gpssh-exkeys -f conf/all_host,期间需要输入gpadmin的密码。
[gpadmin@master ~]$ gpssh-exkeys -f conf/all_host
[STEP 1 of 5] create local ID and authorize on local host
... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped
[STEP 2 of 5] keyscan all hosts and update known_hosts file
[STEP 3 of 5] authorize current user on remote hosts
... send to standby
... send to segment1
... send to segment2
[STEP 4 of 5] determine common authentication file content
[STEP 5 of 5] copy authentication files to all remote hosts
... finished key exchange with standby
... finished key exchange with segment1
... finished key exchange with segment2
[INFO] completed successfully
[gpadmin@master ~]$

2.2.3批量安装

gpseginstall -f conf/all_host -u gpadmin -p gpadmin

这里-u指定用户,-p授予gpadmin的权限

2.2.4检查批量安装结果

gpssh -f conf/all_host -e ls $GPHOME
[gpadmin@master ~]$ gpssh -f conf/master -e ls $GPHOME
[standby] ls /home/gpadmin/greenplum/greenplum-db
[standby] bin docs etc  ext greenplum_path.sh include lib pxf
sbin share
[ master] ls /home/gpadmin/greenplum/greenplum-db
[ master] bin docs etc  ext greenplum_path.sh include lib pxf
sbin share
[ segment1] ls /home/gpadmin/greenplum/greenplum-db
[ segment1] bin docs etc  ext greenplum_path.sh include lib pxf
sbin share
[ segment2] ls /home/gpadmin/greenplum/greenplum-db
[ segment2] bin docs etc  ext greenplum_path.sh include lib pxf
sbin share

2.3 初始化数据库集群

2.3.1 创建数据存放目录(全部在master使用gpadmin用户操作)
切换到gpadmin用户家目录:cd
创建主服务器目录:gpssh -h master -e 'mkdir gpdata/master -p'
创建备服务器目录:gpssh -h standby -e 'mkdir gpdata/master -p'
创建数据节点服务器目录:gpssh -f conf/segment -e 'mkdir gpdata/segment/primary -p'

2.3.2 创建初始化文件
从安装目录拷贝配置文件到gpadmin用户家目录的conf文件夹:

cp /opt/greenplum/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config conf/

修改conf/gpinitsystem_config文件参数如下:

[gpadmin@master ~]$ egrep -v '(^$|^#)' conf/gpinitsystem_config
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/segment/primary)
MASTER_HOSTNAME=master
MASTER_DIRECTORY=/home/gpadmin/gpdata/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE

2.3.3 参数说明
ARRAY_NAME:设置阵列名称。
SEG_PREFIX:设置segment的前缀,默认gpseg。
PORT_BASE:设置segment的起始端口,会从此端口往上增加,默认从40000开始。
DATA_DIRECTORY:设置segment primary的数据存储目录,根据实例个数填写。
MASTER_HOSTNAME:设置master的主机名。
MASTER_DIRECTORY:设置master的存储目录。
MASTER_PORT:设置master的端口,默认5432。
TRUSTED_SHELL:设置节点之间的信任方式,默认SSH。
CHECK_POINT_SEGMENTS:预写日志文件(WAL)数量,默认为8,这意味着为主机上的每个Segment
或Master实例分配1088MB的WAL空间。
ENCODING=UNICODE:设置初始字符集,默认UNICODE(UTF-8)。

2.3.4创建初始化数据节点列表(如果前面已经创建则忽略)

[gpadmin@master ~]$ cat conf/segment
segment1
segment2

2.3.5运行初始化工具

gpinitsystem -c conf/gpinitsystem_config -h conf/segment -s standby

gpinitsystem命令参数解释:
-c:指定初始化文件。
-h:指定segment主机文件。
-s:指定standby主机,创建standby节点。
中间需要输入几次yes,如果不报ERROR,GP数据库就安装好了并且各个节点都启动了。安装过程中一定要注意相关执行的方式和权限,不然可能会失败。
如果gpinitsystem实用程序失败,如果系统处于部分安装状态,它将创建以下备用脚本:
〜/ gpAdminLogs / backout_gpinitsystem_ <user> _ <timestamp>
您可以使用此脚本清理部分创建的Greenplum数据库系统。此回退脚本将删除任何实用程序创建的数据目录,postgres进程和日志文件。纠正导致gpinitsystem失败并运行退出脚本的错误后,您应该准备重试初始化您的Greenplum数据库数组。

2.3.6分别在每个主机查看postgres运行情况
用netstat命令查看每个主机的postgres进程:netstat -ltnp | grep postgres
基本就能看出来哪个端口是Master(5432)、哪个端口是Standby(5432)、哪些端口是Segment(40000,40001,40002)。

[gpadmin@master ~]$ gpssh -f conf/master -e netstat -ltnp | grep postgres
[ master] tcp 0 0 0.0.0.0:5432 0.0.0.0:*
LISTEN 8294/postgres
[ master] tcp6 0 0 :::5432 :::*
LISTEN 8294/postgres
[ master] tcp6 0 0 :::14182 :::*
LISTEN 8302/postgres: 543
[segment1] tcp 0 0 0.0.0.0:40000 0.0.0.0:*
LISTEN 3611/postgres
[segment1] tcp 0 0 0.0.0.0:41000 0.0.0.0:*
LISTEN 3610/postgres
[segment1] tcp6 0 0 :::40000 :::*
LISTEN 3611/postgres
[segment1] tcp6 0 0 :::41000 :::*
LISTEN 4181/postgres
....................................

2.3.7 设置环境变量
Greenplum数据库管理实用程序还要求设置MASTER_DATA_DIRECTORY环境变量,这应该指向由
gpinitsystem程序在主数据目录位置创建的目录。
查看MASTER_DATA_DIRECTORY:ls /home/gpadmin/gpdata/master
设置环境变量如下,并source .bashrc。
写入并将文件拷贝到standby节点。

[gpadmin@master ~]$ tail -3 .bashrc
source /home/gpadmin/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/master/gpseg-1
export PGPORT=5432
[gpadmin@master ~]$ scp .bashrc standby:/home/gpadmin/

2.4添加镜像
在添加mirrors的过程中,Greenplum数据库应处于静态状态,工作负载和其他查询不应该运行。

2.4.1 在数据节点服务器上创建mirrors数据存储目录

gpssh -f conf/segment -e 'mkdir gpdata/segment/mirror'

如果命令执行报错,请使用cd命令切换当前目录到gpadmin家目录。

2.4.2生成镜像配置文件

gpaddmirrors -o mirror_config_file

期间需要输入镜像数据存放目录/home/gpadmin/gpdata/segment/mirror

2.4.3 查看生成的镜像配置文件

[gpadmin@master ~]$ cat conf/mirror_config_file
filespaceOrder=
mirror0=0:segment1:41000:42000:43000:/home/gpadmin/gpdata/segment/mirror1/gpseg0
mirror1=1:segment2:41001:42001:43001:/home/gpadmin/gpdata/segment/mirror2/gpseg1

2.4.4开始创建镜像
gpaddmirror -i mirror_config_file,期间需要输入yes 确认。
完成如果没有报错,可以输入 gpstate -s 查看整个数据库状态。如果报错,请source .bashrc
后,再执行gpstate -s。

2.5连接使用Greenplum

2.5.1 远程连接配置

修改配置文件添加信任的网络:

vim /home/gpadmin/gpdata/master/gpseg-1/pg_hba.conf
Host  all  all 192.168.122.0/24
trust

修改数据库侦听端口:

vim /home/gpadmin/gpdata/master/gpseg-1/postgresql.conf
listen_addresses = '*'

2.5.2 连接方式
psql –help
psql [OPTION]... [DBNAME [USERNAME]]
本地连接:psql -d 库名
测试连接:psql -d postgres
其他工具连接:如navicate

三、Greenplum高可用测试与实现

3.1 数据节点高可用测试(通过master上的FTS进程实现)

3.1.1 杀死其中一个segment的postgres进程

3.1.2 查看某个数据节点宕机后集群状态

gpstate -s

3.1.3恢复故障节点

gprecoverseg
期间需要输入yes
恢复完成后,输入gpstate -m查看mirror状态,等待data status 全部变成Synchronize。
从状态可以看出,故障恢复后,primary并没有马上恢复主数据节点,等mirror状态全部Synchronize之后,尝试使用gprecoverseg -r恢复数据节点主备。如果恢复失败,则重启数据库服
务 gpstop -r 后恢复正常。

3.2 master高可用实现

3.2.1查看是否部署standby

连接到postgre库:psql -d postgres
使用sql命令查看是否部署

db1=# select string_agg(role||'-'||hostname,'|') from gp_segment_configuration
where content='-1';
string_agg
--------------------
p-master|m-standby
(1 row)

如果显示结果如上,则表示已经部署standby,否则在master上初始化standby : gpinitstandby -s standby(做主备节点的主机名),建议一开始就部署standby。

3.2.2 master模拟故障

杀死master主节点postgres进程:pkill postgres

3.2.3 master故障处理

master节点:删除master节点5432进程锁:rm -f /tmp/.s.PGSQL.5432*
standby节点:
切换到gpadmin用户:su gpadmin;source .bashrc
激活主备功能:gpactivatestandby -d ${MASTER_DATA_DIRECTORY}
测试数据库能否正常连接使用:psql -d postgres

3.2.4 恢复master

原master节点:
删除主节点运行目录:rm -rf /home/gpadmin/gpdata/master/*
原standby节点:
将master节点初始化为主备:gpinitstandby -s master(主机名)
关闭数据库主节点:gpstop -m
原master:
激活主备功能:gpactivatestandby -d $MASTER_DATA_DIRECTORY
查看所有节点是否恢复正常:gpstate -f 或 gpstate -s
原standby主机:
删除主节点运行目录:rm -rf /home/gpadmin/gpdata/master/*
原master主机:
初始化主备节点:gpinitstandby -s standby(主机名)

3.2.5 验证

连接到postgre库:psql -d postgres
使用sql命令查看是否部署standby:

db1=# select string_agg(role||'-'||hostname,'|') from gp_segment_configuration
where content='-1';
string_agg
--------------------
p-master|m-standby
p-master|m-standby
(1 row)

-----------------------------------------------------续-------------------------------
-------------------------------

四、使用gpfdist和外部表

4.1 gpfdist介绍

greenplum作为OLAP分析型软件,自然避免不了从外部数据库加载大量的数据,然而传统的ETL数据
传输方法(select=>insert)到GP需要经过GP的单点master,效率非常低。
下面介绍外部表用gpfdist快速导入数据:

普通外部表和可写外部表区别:
1、普通外部表只能select,可写外部表只能insert
2、可写外部表没有错误表
3、可写外部表可以指定分布键,如果不指定,默认随机分布;普通外部表只能随机分布

gpfdist优势:
1、直接由segment并发加载
2、直接加载数据文件,并可读写(和选择的外部表类型有关)
3、默认数据随机分配,每个节点负载均衡(和选择的外部表类型有关)

4.2 使用gpfdist和只读外部表

4.2.1 启动gpfdist:

[gpadmin@master ~]$ nohup gpfdist -p 8080 -d ./ &
[2] 12220
[gpadmin@master ~]$ jobs
[2]+ 运行中 nohup gpfdist -p 8080 -d ./ &

4.2.2 创建普通外部表

[gpadmin@master ~]$ psql -d db1
psql (8.3.23)
Type "help" for help.
db1=# create external table t2(id int,name
char(5))location('gpfdist://master:8080/gpfdist/t2')format 'csv'(delimiter '
');
CREATE EXTERNAL TABLE

注意:其中master:8080代表nohup gpfdist命令-d 指定的目录。

4.2.3 在对应的目录创建写入文件

[gpadmin@master gpfdist]$ pwd
/home/gpadmin/gpfdist
[gpadmin@master gpfdist]$ vim t2
[gpadmin@master gpfdist]$ cat t2
1 jack
2 tom

4.2.4 在数据库中查看刚才创建的外部表

db1=# select * from t2;
id | name
----+-------
1 | jack
2 | tom
(2 rows)

系统性能测试方法
验证系统配置:gpcheck -f conf/all_host
验证网络性能:gpcheckperf -f conf/all_host -r N -d /tmp
并行测试: -r N
串行测试: -r n
矩阵测试: -r M
验证磁盘I/O性能:gpcheckperf -f conf/all_host -r ds -d /tmp
验证内存性能:gpcheckperf -f conf/all_host -r s -d /tmp

Greenplum部署相关推荐

  1. GreenPlum部署时所修改内核参数的含义

    ORIGINAL值为CentOS7的缺省值,供对比. # 系统所允许的最大共享内存段的大小(以字节为单位). # ORIGINAL.kernel.shmmax = 184467440736927743 ...

  2. Greenplum数据库(GPDB)初识

    1.特性 Greenplum数据库(GPDB),分布式数据库,数据仓库快速查询工具,特性: 1)GPDB完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展,从应用编程接口上讲,它 ...

  3. Greenplum installation guide

    Envireronment: VMware® Workstation 12 Pro 12.0.1 build-3160714(Host: Windows 7 Ultimate) Centos 6.5 ...

  4. VLDB创始人:为什么和其他相比,Greenplum是最好的?

    获得技术资料内容,请访问Greenplum中文社区网站 本文翻译自VLDB Co-founder Paul Johnson发布于Linkedin上的<Why Greenplum Is The B ...

  5. 「揭秘GP」VLDB 创始人:为什么和其他相比,Greenplum 是最好的

    了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站 导读:从最初的 Greenplum 开始,到现在已经超过15年的验证,我们一直是 Greenplum 的用户.多年来,随着我 ...

  6. GreenPlum 浅谈

    一.Greenplum 是什么 是一款开源的分布式数据库存储解决方案,其主要关注在数据仓库和商业智能方面.可以在虚拟化x86服务器上运行无分享(shared-nothing)的大规模并行处理(MPP) ...

  7. 【Linux部署】Greenplum数据库6.13.0单机版 [CRITICAL]:-Error occurred: non-zero rc: 1(报错详情+问题处理:内存释放)

    1. 报错详情 启动时报一下错误: 20210929:14:24:06:008555 gpstart:tcloud:gpadmin-[INFO]: -Starting Master instance ...

  8. Greenplum 集群部署

    最近开始接触Greenplum,线上也在使用了,感觉还不错,本次介绍一下集群的部署方法.那么Greenplum的架构如下: (架构图来源网络) 简单来说GPDB是一个分布式数据库软件,其可以管理和处理 ...

  9. Greenplum集群部署和架构优化,我总结了5000字的心得

    这是学习笔记的第 2361篇文章 最近对离线数仓体系进行了扩容和架构改造,也算是一波三折,出了很多小插曲,有一些改进点对我们来说也是真空地带,通过对比和模拟压测总算是得到了预期的结果,这方面尤其值得一 ...

最新文章

  1. 【转】CentOS下firefox安装flash说明
  2. blob 图片_《你不知道的 Blob》番外篇
  3. 使用PHP读取和创建txt,doc,xls,pdf类型文件
  4. RN自定义组件封装 - 播放类似PPT动画
  5. VUE 解决:Method “xxx“ has already been defined as a data property.
  6. [Uva10641]Barisal Stadium(区间dp)
  7. Oracle 创建表 练习题
  8. 浅析C#中new、override、virtual关键字的区别
  9. 我用 Python 集齐了支付宝五福!
  10. 安装虚拟环境和Flask
  11. oracle10g配置tns,连接Oracle 10g时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的SID...
  12. 收藏丨8个常用中文OCR数据集,附下载链接
  13. MODIS,Himwari-8遥感数据介绍
  14. CSS实现简单的3D旋转魔方
  15. 中继器,集线器,网桥的区别
  16. EKF_SoC:基于MATLAB/Similink的扩展卡尔曼滤波器EKF的锂电池SoC计算仿真模型
  17. Android-图片压缩
  18. 【论文复现】ARBITRAR : User-Guided API Misuse Detectionl
  19. python 文件格式转换_数据分析:基于Python的自定义文件格式转换系统
  20. 信息系统开发与管理 思维导图

热门文章

  1. 对卷积神经网络中卷积层、激活层、池化层、全连接层的理解
  2. MATLAB抽样定理实验
  3. 2021年4月20日 星期二 谷雨 霾
  4. HOG matlab 代码
  5. echartsX轴、y轴文字太长;重叠显示。
  6. TCP端口和UDP端口有什么区别
  7. Linux环境部署:创建虚拟主机
  8. 反函数求导题目求解答。
  9. 计算机非线编辑配置,做非线编什么样的电脑配置最合理!
  10. UTC时间和当地时间转换