GreenPlum Database®集群配置和使用说明

一. GreenPlum Database®介绍
 在Apache 2许可下发布。
 基于PostgreSQL,Greenplum数据库增加了大量的并行分析创新,采用了大规模并行处理架构
 高性能加载,可达10TB/小时
 支持Apache MADlib,提供先进的机器学习,通过用户自定义函数扩展了GreenPlum数据库的SQL功能
 支持外部数据的访问

二. GreenPlum Database®分布式部署
测试所用的系统是rhel-server-7.4-x86_64,cpu内存16G双核四线程虚拟机,机器名和ip如下:
机器名 Ip
mdw 172.16.18.50
sdw1 172.16.18.51
sdw2 172.16.18.52
mdw:master节点(未配置standby master节点)
sdw1:primary segment和mirror segment节点
安装版本:greenplum-db-5.5.0-rhel7-x86_64.zip

1 关闭防火墙-all hosts
#systemctl stop firewalld
#systemctl disable firewalld
#systemctl status firewalld

2 修改机器内核参数—all hosts
在/etc/sysctl.conf文件中设置以下参数并重新启动:
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.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 = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2

3 修改用户资源参数-all hosts
在/etc/security/limits.conf文件中设置以下参数:
*soft nofile 65536
*hard nofile 65536
*soft nproc 131072
*hard nproc 131072

4 每个磁盘设备文件应具有预读(blockdev)值16384。–all hosts
#/sbin/blockdev --setra 16384 /dev/sda
#/sbin/blockdev --setra 16384 /dev/sda1
#/sbin/blockdev --setra 16384 /dev/sda2

5 其他设置 – all hosts
 #grubby --update-kernel=ALL --args=“elevator=deadline”
 #grubby --update-kernel=ALL --args=“transparent_hugepage=never”
 禁用RemoveIPC。 在Greenplum数据库主机系统的/etc/systemd/logind.conf中设置此参数。
RemoveIPC=no
 设置/etc/ssh/sshd_config
MaxStartups 200
 修改/etc/hosts
mdw 172.16.18.50
smdw1 172.16.18.51
smdw2 172.16.18.52
 reboot修改的参数生效

6 添加用户-master 节点
#groupadd gpadmin
#useradd gpadmin -g gpadmin -r -m
#passwd gpadmin
New password: map
Retype new password: map

7 安装greenplum- master节点
#tar -xvzf greenplum-db-5.5.0-rhel7-x86_64.zip
#/bin/bash greenplum-db-5.5.0-rhel7-x86_64.bin
安装过程中注意有一个地方输入yes,还有一个地方输入安装路径,本例输出如下
Y
/home/gpadmin/greenplum-db-5.5.0

8 添加环境变量
/home/gpadmin/.bash_profile
/home/gpadmin/.bashrc
最后加两句
source /home/gpadmin/greeplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data1/gpdata/master/gpseg-1
注意:如果重启了以下步骤直接运行,每开启一个终端切换用户都要执行最后加的两句,以下操作默认重启了机器

9 其他节点安装
#su gpadmin
#mkdir gpconfig
#cd /home/gpadmin/gpconfig
#touch hostfile_exkeys
内容如下
mdw
smdw1
smdw2
#touch hostfile_gpinitsystem
后续备用内容如下
smdw1
smdw2
#touch hostfile_gpssh_segonly
后续备用内容如下
smdw1
smdw2
#gpseginstall -f /home/gpadmin/gpconfig/hostfile_exkeys -u gpadmin -p map
验证安装是否成功
gpssh -f hostfile_exkeys -e ls -l $GPHOME
如果成功登录到所有主机并且未提示输入密码,安装没有问题。所有主机在安装路径显示相同的内容,且目录的所有权为gpadmin用户,否则需要查看原有并保证每个节点都安装了gp包

10 建立节点间信任
#su 说明:这里给root也建立信任方便后续操作,如果不建,报权限错误的时候给权限就可以了
#source /home/gpadmin/greeplum-db/greenplum_path.sh
#gpssh-exkeys -f /home/gpadmin/gpconfig/hostfile_exkeys
#su gpadmin
#gpssh-exkeys -f /home/gpadmin/gpconfig/hostfile_exkeys

11 创建目录
#su
#mkdir /data
#mkdir /data/master
#chown gpadmin:gpadmin /data/master/
#source /home/gpadmin/greeplum-db/greenplum_path.sh
#gpssh -f /home/gpadmin/gpconfig/hostfile_gpssh_segonly -e ‘mkdir /data’
#gpssh -f /home/gpadmin/gpconfig/hostfile_gpssh_segonly -e ‘mkdir /data/primary’
#gpssh -f /home/gpadmin/gpconfig/hostfile_gpssh_segonly -e ‘mkdir /data/mirror’
#gpssh -f /home/gpadmin/gpconfig/hostfile_gpssh_segonly -e ‘chown gpadmin /data/primary’
#gpssh -f /home/gpadmin/gpconfig/hostfile_gpssh_segonly -e ‘chown gpadmin /data/mirror’

12 同步系统时钟:
1.Matser主机的/etc/ntp.conf文件server可以保持不变。
2.Segments主机的/etc/ntp.conf文件server改成 server mdw prefer(Master的hostname)
3.在Master主机上,通过NTP守护进程同步系统时钟:
gpssh -f all_hosts -v -e ‘ntpd’
4.验证下观察时间是否一致:
gpssh -f /home/gpadmin/all_hosts -v date

13 Greenplum初始化配置—master 节点
su gpadmin
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config
/home/gpadmin/gpconfigs/gpinitsystem_config
修改gpinitsystem_config,文件全内容如下

#FILE NAME: gpinitsystem_config

#Configuration file needed by the gpinitsystem

################################################
#### REQUIRED PARAMETERS
################################################

#### Name of this Greenplum system enclosed in quotes.
ARRAY_NAME=“Greenplum Data Platform”

#### Naming convention for utility-generated data directories.
SEG_PREFIX=gpseg

#### Base number by which primary segment port numbers
#### are calculated.
PORT_BASE=42000

#### File system location(s) where primary segment data directories
#### will be created. The number of locations in the list dictate
#### the number of primary segments that will get created per
#### physical host (if multiple addresses for a host are listed in
#### the hostfile, the number of segments will be spread evenly across
#### the specified interface addresses).
declare -a DATA_DIRECTORY=(/data/primary /data/primary)

#### OS-configured hostname or IP address of the master host.
MASTER_HOSTNAME=mdw

#### File system location where the master data directory
#### will be created.
MASTER_DIRECTORY=/data/master

#### Port number for the master instance.
MASTER_PORT=5432

#### Shell utility used to connect to remote hosts.
TRUSTED_SHELL=ssh

#### Maximum log file segments between automatic WAL checkpoints.
CHECK_POINT_SEGMENTS=8

#### Default server-side character set encoding.
ENCODING=UNICODE

################################################
#### OPTIONAL MIRROR PARAMETERS
################################################

#### Base number by which mirror segment port numbers
#### are calculated.
MIRROR_PORT_BASE=50000

#### Base number by which primary file replication port
#### numbers are calculated.
REPLICATION_PORT_BASE=41000

#### Base number by which mirror file replication port
#### numbers are calculated.
MIRROR_REPLICATION_PORT_BASE=51000

#### File system location(s) where mirror segment data directories
#### will be created. The number of mirror locations must equal the
#### number of primary locations as specified in the
#### DATA_DIRECTORY parameter.
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror)

################################################
#### OTHER OPTIONAL PARAMETERS
################################################

#### Create a database of this name after initialization.
DATABASE_NAME=test

#### Specify the location of the host address file here instead of
#### with the the -h option of gpinitsystem.
# MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem

14 执行初始化命令
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
注意:此语句没有配置standby master节点和扩展的mirror节点,若想配置standby master节点和扩展mirror节点,则分别加上-s和-S参数,如下,详见说明http://gpdb.docs.pivotal.io/550/install_guide/init_gpdb.html 本例中未测试此种场景。
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
-s standby_master_hostname -S

三. 节点宕机处理
若smdw2节点宕机,则数据不会丢失,访问数据没问题,恢复smdw2后,执行语句
#\ gprecoverseg
观察恢复是否完成
#gpstate -s | grep Sync (全部为 Synchronized 表示恢复完成)
平衡节点,会出现短暂的数据库不可用状态,在处理过程中会出现业务中断
# gprecoverseg -r

四.增加standby
一个gp集群只有一个master肯定会让人不放心,还好有备用,当master宕掉后,会自动启用standby作为master,下面来看一下standby怎么添加

在standby服务器上执行
#mkdir /data/gpdata/master
#chown gpadmin:gpadmin /data/gpdata/master

在master服务器上执行
$ gpinitstandby -s hostname
中间输入一次Y

五.增加mirror(本例中初始化时已经添加了mirror节点)
mirror就是镜像,也叫数据备份。mirror对于数据存储来说很重要,因为我们的服务器指不定什么时候出毛病,有mirror就好很多了,因为两台存储节点同时宕掉的几率还是很小的。如果前面在GP初始化文件里忘记配置mirror了,请按照下面的方法添加
#\ gpaddmirrors -p 50000
运行过程中需要输入两次mirror路径:/data1/gpdata/mirror

六.设置访问权限
打开/data1/gpdata/master/gpseg-1/pg_hba.conf 按照最下面的格式添加客户端ip或网段
#user define
host all all 0.0.0.0/0 trust
host all all 127.0.0.1/28 trust

七.扩展segment节点
增加两台(192.168.10.203、192.168.10.204)
机器名 Ip
smdw3 172.16.18.53
smdw4 172.16.18.54
1 机器环境参照” GreenPlum Database®分布式部署”里的1、2、3、4、5
其中5步中的修改/etc/hosts集群中的每台机器都要添加新添加的两台机器

2 增加的机器创建用户和用户组gpadmin和master主机一致。
本例由于机器少,直接每台机器执行命令
#\ groupadd gpadmin
#\ useradd gpadmin -g gpadmin -r -m
#\ passwd gpadmin
New password: map
Retype new password: map

3 增加的机器安装gp
Master主机gpadmin路径
#tar zcvf gp.tar.gz greenplum-db*
#scp gp.tar.gz smdw3:/home/gpadmin
#scp gp.tar.gz smdw4:/home/gpadmin
增加的机器执行tar zxvf gp.tar.gz

说明2、3步这里也可以用gpseginstall命令参加” GreenPlum Database®分布式部署”的第9步
touch hostfile_exkeysadd
内容如下
smdw3
smdw4
gpseginstall -f /home/gpadmin/gpconfig/hostfile_exkeys -u gpadmin -p map

4. 建立节点间信任 master节点执行
修改hostfile_exkeys文件,添加新加的两台机器
#su 说明:这里给root也建立信任方便后续操作,如果不建,报权限错误的时候给权限就可以了
#source /home/gpadmin/greeplum-db/greenplum_path.sh
#gpssh-exkeys -f /home/gpadmin/gpconfig/hostfile_exkeys
#su gpadmin
#gpssh-exkeys -f /home/gpadmin/gpconfig/hostfile_exkeys

5.新增加的节点创建目录 /data/primart /data/mirror 并赋gpadmin权限chown

6. 初始化新扩展 master节点执行
gpexpand -f hosts_expand
中间提示Would you like to initiate a new System Expansion Yy|Nn (default=N):
输入Y
中间提示+输入本例每台机器2个segment
How many new primary segments per host do you want to add? (default=0):
> 2
Enter new primary data directory 1:
> /data/primary/gpseg4
Enter new primary data directory 2:
> /data/primary/gpseg5
Enter new mirror data directory 1:
> /data/mirror/gpseg4
Enter new mirror data directory 2:
> /app/mirror/gpseg5

以上会报错然后生成一个名为gpexpand_inputfile_20171208_005718类似的配置文件,需要修改后才能通过配置文件扩展数据库

7. 修改如上生成的配置文件只保留如下行
smdw3:smdw3:42000:/data/primary/gpseg4:10:4:p:41000
smdw4:smdw4:50000:/data/mirror/gpseg4:16:4:m:51000
smdw3:smdw3:42001:/data/primary/gpseg5:11:5:p:41001
smdw4:smdw4:50001:/data/mirror/gpseg5:17:5:m:51001
smdw4:smdw4:42000:/data/primary/gpseg6:12:6:p:41000
smdw3:smdw3:50000:/data/mirror/gpseg6:14:6:m:51000
smdw4:smdw4:42001:/data/primary/gpseg7:13:7:p:41001
smdw3:smdw3:50001:/data/mirror/gpseg7:15:7:m:51001

8. 然后运行gpexpand脚本
#gpexpand -i gpexpand_inputfile_20171208_005718 -D test
test为集群中存在的数据库
若没报错则扩展成功,否则
启动限制模式,回滚。
gpstart -R
gpexpand --rollback -D test
gpstart -a
然后找问题继续上一步,直到成功。

可以采用脚本进行表重分布
# gpexpand -d 60:00:00

八 PostGIS、MADlib、Fuzzy String Match扩展的安装

1 postgis
下载postgis-2.1.5-gp5-rhel7-x86_64.gppkg包,
#su gpadmin
#gppkg -i postgis-2.1.5-gp5-rhel7-x86_64.gppkg
#postgis_manager.sh test install

移除
#postgis_manager.sh test uninstall

其他说明详见 http://gpdb.docs.pivotal.io/550/ref_guide/extensions/postGIS.html

2 MADlib
下载madlib-1.13-gp5-rhel7-x86_64.tar.gz
#su gpadmin
#gppkg -i madlib-1.13-gp5-rhel7-x86_64.tar.gz
#madpack -s madlib -p greenplum -c gpadmin@mdw:5432/test install

移除
madpack -s madlib -p greenplum -c gpadmin@mdw:5432/test uninstall
其他说明详见 http://gpdb.docs.pivotal.io/550/ref_guide/extensions/madlib.html

3.Fuzzy String Match
Greenplum Fuzzy String Match扩展提供了基于各种算法确定字符串之间的相似性和距离的功能。
安装
psql -f $GPHOME/share/postgresql/contrib/fuzzystrmatch.sql
卸载
psql -f $GPHOME/share/postgresql/contrib/uninstall_fuzzystrmatch.sql

但是官网给出警告:函数soundex,metaphone,dmetaphone和dmetaphone_alt对于多字节编码(如UTF-8)无法正常工作。

更多说明详http://gpdb.docs.pivotal.io/550/ref_guide/extensions/fuzzystrmatch.html#topic_soundex

附录—参考网站
https://greenplum.org/
http://gpdb.docs.pivotal.io/550/install_guide/prep_os_install_gpdb.html#topic8
http://blog.csdn.net/tangdong3415/article/details/54583337
http://blog.csdn.net/u013181216/article/details/72605362
http://blog.51cto.com/jxzhfei/2056120

你可能感兴趣的:(数据库使用)