Greenplum之桃花源(6)

Greenplum部署

1、 安装中所涉及到的操作系统相关参数调整,主要针对Redhat Linux操作系统,其他操作系统(如:SUSE、Solaris等)参数配置上会存在差异,后续逐步补充完善。
2、 安装前在作者csdn资源仓库中下载,greenplum安装脚本zip包,其中有众多方便的安装脚本。(标黄的即是zip包中的脚本)

第一章 安装前准备

1.1 网络规划

greenplum拓扑图
Greenplum数据库系统由Master主机和Segment主机组成。Master主机和Segment主机之间会组成一个内部网络(LAN)。为了充分发挥Greenplum数据库并行处理的性能,对网络带宽要求较高。服务器会配置多个网卡(一般是配置NAT网络和host-only网络),内部网需要配置多个网段的IP。需要对外连接的服务器需配置外部IP。

一建议在Greenplum数据库系统安装之前,把网络配置规划好。

1.2 存储空间规划

首先,需要评估目标数据库数据所需要的空间容量。建议了解客户搭建Greenplum数据库的具体应用。

举例:估计数据库所需空间为U,数据库需要启用Mirror,磁盘阵列总可用空间为D(Raid之后)。空间规划服务和如下公式:

2 * U + U / 3 = D * 70%

磁盘空间D平均分配到各个Segment服务器上。

Master需要相应的空间。使用服务器内置硬盘的计算方式类似。

1.3 数据库实例规划

规划每个Segment服务器上建立的数据库实例的数量(instance数量),通常建议每2个CPU内核(core)对应一个数据库实例。

如 :2*4核CPU的服务区,可配置4个实例。

第二章 安装介质

2.1 命令服务

补充:不同操作系统安装镜像不同,安装前确认所有机器上已安装好下列命令或服务:

1:httpd
2:ifconfig

2.2 Greenplum安装介质

GP安装介质需根据实际需要从Download Center上下载对应的版本。

大部分情况下开发时候我们只需要建立greenplum的后台服务,而不需要可视化工具之类,因此我们只需要一个bin或者rpm的gp安装包。

Greenplum安装包可提前执行,可利用其gpscp、gpssh等工具。

2.3 操作系统建议

CentOS7.3

Segment节点建议不安装X-Windows, Gnome, KDE, and Printers。

第三章 操作系统准备

3.1 修改主机名

修改各台主机的主机名称。一般建议的命名规则如下:

Master:mdw

Standby Master:smdw

Segment Host:sdw1、sdw2……sdwn

如果主机名不满足上述规则,脚本中要修改hostname

修改操作:

1、hostname mdw
2、修改 /etc/sysconfig/network 配置文件中的hostname
3、如果不生效,修改/etc/hostname配置文件中的内容为主机名
4、如果还是不生效,hostnamectl set-hostname mdw(可直接执行4步骤)

3.2 修改/etc/hosts文件

通常Master和Standby Master主机都配置外部IP和内部IP。Segment主机可只配置内部IP。所有主机的hosts文件内容必须保持一致。

如下为配置例子:

192.168.1.254 mdw
192.168.1.253 smdw
192.168.1.252 sdw

3.3 关闭相关服务

【涉及机器】:所有服务器

关闭防火墙

Systemctl stop firewalld
Systemctl disable firewalld

3.4 修改系统参数(Redhat)

canrun.sh
执行canrun.sh使当前目录脚本获得可执行权限
gp_system.sh
gp_system-1.sh
【涉及机器】:所有服务器

使用root用户进行修改,可直接执行上述两个脚本,在此之前,如果本机不通外网,则需要部署本地源,这部分内容因为属于linux部署基本操作所以这里不说,对参数的修改重启后生效。

3.5 注意

用脚本修改完毕之后注意,查看/etc/sysctl.conf中的kernel.sem参数

这个参数随着各主机内存配置的增大而增大。

32G时配置250 512000 100 2048合适

256G时配置50100 128256000 50100 2560合适

其他内存配置置中取值

Kernel.sem取值需要满足规则:

第一个值和第三个值相等,第二个值数量级等于第三个和第四个值乘积。

kernel.sem中四个参数表示对信号量的限制,具体含义大家可去自行了解。

第四章 建立数据目录

4.1 Linux系统采用XFS文件系统

mountdisk-挂载盘.txt

此部分建议根据所给的mountdisk-挂载盘.txt自行操作

dataurl.sh

每个节点执行dataurl脚本生成数据目录,执行时后面加上数据目录参数,如:./dataurl.sh /data

第五章 Master安装Greenplum

gp_master_install.sh
Master节点运行,提供一个参数$1为greemplum的版本号,例如:./gp_master_install.sh 5.14.0。

这个官方链接下载二进制包,可以选择版本。最新为6.0版本

Master节点安装GP,安装在/usr/local/greenplum-db/目录下。

choosehostpath.sh

Master节点执行choosehostpath.sh,创建之后所需的文件,/usr/local/greenplum-db/gpconfigs/路径下的hostsfile文件。

看是否生成all_hosts_only、all_segs、gpinitsystem_config、hostfile_exkeys、stby_all_segs这4个文件

第六章 建立多机信任

sshconfig.sh

Master节点执行:修改多机信任相关的参数,执行完之后建议重启

6.1 root用户建立多机信任

建立多机信任:

gpssh-exkeys -f /usr/local/greenplum-db/gpconfigs/hostfile_exkeys

对于RHEL6.x版本,建议先关闭一个环境变量再做多机互信

selinux设置disabled

ps:如建立多机信任时出现permission denied(publickey.gssapi-with-mic)或者类似的错误,需要修改每台机器的/etc/ssh/sshd-config文件,去掉PermitRootLogin前的#,并把对应的值改为yes,

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

默认是用的22端口,如果22端口没开建议先打开22端口

6.2 建立用户和组

createug.sh
所有节点执行修改用户和组,执行时后面加参数,参数值为数据目录./createug.sh /data

6.3 修改gpadmin用户配置
gpadmincg.sh

所有节点使用gpadmin用户操作

执行时候更改脚本中的

MASTER_DATA_DIRECTORY=/data/master/gpseg-1

将值改为你的主机数据目录

6.4 gpadmin用户建立多机信任

使用gpadmin用户在Master主机上操作

gpssh-exkeys -f /usr/local/greenplum-db/gpconfigs/hostfile_exkeys

(提示密码,输入gpadmin)

对于RHEL6.x版本,建议先关闭一个环境变量再做多机互信

unset OPENSSL_CONF

第七章 时钟同步

使用root用户进行操作,涉及所有服务器。

Greenplum推荐使用NTP(Network Time Protocol)同步各台主机的时钟。建议设置一台独立的时钟服务器。

1、Master服务器配置与时钟服务器同步。修改配置文件/etc/ntp.conf后,启动ntpd服务。

举例:

配置文件增加:server 10.6.220.20

启动服务:

service ntpd start
chkconfig ntpd on

如果没有独立的时钟服务器,则应该以Master服务器做内部的时钟服务器,Master就可以不用修改ntp.conf配置文件,直接启动ntpd服务即可。

2、所有Segment服务器优先与Master服务器同步,其次与Standby Master服务器同步。修改配置文件/etc/ntp.conf后,重启ntpd服务。

配置文件增加:

server mdw prefer
server smdw

启动服务:

service ntpd start
chkconfig ntpd on

3、Standby Master服务器优先与Master服务器,其次与始终服务器同步。修改配置文件/etc/ntp.conf后,重启ntpd服务。

配置文件增加:

server mdw prefer
server 10.6.220.20 (时钟服务器举例)

启动服务:

service ntpd start
chkconfig ntpd on

如果没有独立的时钟服务器,第二行不用配置。

4、检查时钟同步结果(需要等几分钟,时钟才会自动同步)

gpssh -f ./all_hosts_only
=>date (查看各台服务器时间是否一致)

(按经验来说,第四步先不忙着执行,等都配置好了再来查看)

第八章 其他机器安装Greenplum

重启所有节点之后,在Master节点上执行

gpseginstall -f /usr/local/greenplum-db/gpconfigs/stby_all_segs -p gpadmin

在其他节点上安装GP。若要提示输入smdw的密码,则输入gpadmin。

第九章 系统检查

在Master上使用gpadmin用户登录执行系统检查

9.1 参数配置检查(非必要)

配置all_hosts_single文件内容如下:

sdw1
sdw2

gpcheck -f /usr/local/greenplum-db/gpconfigs/all_hosts_single -m mdw -s smdw

核对并修改下你感应系统参数。

9.2 性能检查

9.2.1 网络性能检查

网络性能测试需要每个网段分别进行测试,按照4个Segment Host和2个网络为例,首先配置如下两个配置文件:

all_net_1文件:

sdw1-1
sdw2-1

all_net_2文件:

sdw1-2
sdw2-2

然后分别针对两个网段继续测试:

gpcheckperf -f /usr/local/greenplum-db/gpconfigs/all_net_1 -r N -d /tmp > checknetwork.out
gpcheckperf -f /usr/local/greenplum-db/gpconfigs/all_net_2 -r N -d /tmp > checknetwork.out

9.2.2 磁盘性能检查
测试磁盘性能主要针对Segment Host进行测试。因此配置一个all_segs的文件进行测试,并且指定多个目录启动并发测试,测试结果会更好。

all_seg配置文件内容举例如下(与数据库初始化可用同一配置文件):

sdw1-1
sdw1-2
sdw1-3

执行如下命令进行测试:

内存及磁盘:

gpcheckperf -f /usr/local/greenplum-db/gpconfigs/all_hosts_single -r ds -D -d /data1/primary -d /data2/primary -d /data1/mirror -d /data2/mirror > checkio.out

磁盘:

gpcheckperf -f /usr/local/greenplum-db/gpconfigs/all_hosts_single -r d -D -d /data1/primary -d /data2/primary -d /data1/mirror -d /data2/mirror

某台机磁盘检查:

gpcheckperf -h sdw6 -h sdw7 -h sdw8 -h sdw9 -h sdw10 -r d -D -d /data1/primary -d /data2/primary -d /data1/mirror -d /data2/mirror

检查磁盘IO的目标目录是数据库的数据文件目录,测试工具会写入系统内存的两倍大小的数据量。

第十章 初始化数据库

afterinstall.sh

在Master节点上执行afterinstall.sh,并给该脚本提供5个参数,

(1)集群名称(2)Segment主要数据存放目录路径(3)Master节点目录路劲,一般为/data/master(4)Segment镜像数据存放目录路径(5)节点列表文件,一般为/usr/local/greenplum-db/gpconfigs/all_segs。

注意:目录路劲中包含多层路径时,使用""传递相应参数。例如:

./afterinstall.sh dataMPP "/data/data1/primary" "/data/master" "/data/data1/mirror" "/usr/local/greenplum-db/gpconfigs/all_segs"

注意:

两个数据存放路径代表所有机子数据节点的存放路径,比如我有n台机子,每台机子上打算设置6个节点。

其中有3个primary主节点分别放在:

/data/data1/primary、/data/data2/primary、/data/data3/primary

3个mirror主节点分别放在:

/data/data1/mirror、/data/data2/mirror、/data/data3/mirror
那么上述执行参数就填

./afterinstall.sh dataMPP "/data/data1/primary /data/data2/primary /data/data3/primary" "/data/master" "/data/data1/mirror /data/data2/mirror /data/data3/mirror" "/usr/local/greenplum-db/gpconfigs/all_segs"

数据目录间用空格隔开
最后一个值为节点列表文件:里面记录着你希望存放数据的主机的hostname,换行符隔开。

初始化:

gpinitsystem -c /usr/local/greenplum-db/gpconfigs/gpinitsystem_config -s smdw

初始化失败:

这里也是出错最多的地方,我们部署MPP要注意一点,这是一个分布式数据库,我们要关注的不只是master主机更有同集群其他主机上的情况:

1、 我们要学会看日志,如果整个集群报错,在/home/gpadmin/gpAdminLogs/记录着完整的执行日志,可以参考。这种错误一般比较容易找到,因为报错会比较直接。

2、 如果部分segment无法启动,这种错误比较隐蔽,一般日志中可能会有错误出现,我们去报错节点的数据目录查看它的日志,$ MASTER_DATA_DIRECTORY/data*/gpseg*/pg_log/下有丰富冗长而大部分都无用的日志,我们先看启动日志,startup.log,如果出现(SEMMI)字样,那么你的/etc/sysctl.conf中的kernel.sem值不匹配当前的配置和节点数设置,你可以尝试重新修改。(startup.log如果有错误扔出,一般都很好解决,根据错误集中修改即可)

3、 如果部分segment无法启动,而startup.log又没有可参考的信息,那么查看$ MASTER_DATA_DIRECTORY/data*/gpseg*/pg_log/下的其他日志,信息很长很复杂,可以慢慢和正常节点的同一时刻日志作一一对比,查看是否有出入。如果发现出入不大,整个文件只有一句话有区别:
正常节点:receive EOF on connection
异常节点:receive close on connection
那么可以看看是否是异常节点主机上相应端口被占用。
打开master节点上
/usr/local/greenplum-db/gpconfigs/gpinitsystem_config
发现其中有四个端口值,这四个端口是各个节点segment进程的基础端口,随着segment的增加端口值往上加一,所以整个集群跑起来往往会占用数十个端口,为了确保这些端口不被占用,我们修改这四个端口值,改的大一点,奇怪一点就好。

修改访问权限

修改Master数据目录(MASTER_DATA_DIRECTORY)下pg_hba.conf文件。需要了解客户实际情况,有多少客户端的IP地址以及角色需要访问数据库。举例如下:

host all gpadmin 10.32.38.0/16 trust
主机 数据库名 角色名 客户端IP范围 认证方法

数据库名:可指定具体的数据库名称,也可使用all 表示所有数据库都允许访问;

角色名:可指定具体的数据库角色名称,也可使用all;

IP范围格式:IP 地址/CIDR,如:10.32.38.0/16;255.0.0.0表示 IPv4 CIDR 掩码长度 8,255.255.255.0表示 IPv4 CIDR 掩码长度 24,而 255.255.255.255 表示 CIDR 掩码长度 32;32就表示指定IP,24就表示小子网。

认证方法:gpmon用户监控时必须填写md5
修改完后数据库重载参数文件:

gpstop -u

第十一章 安装Command Center

11.1 安装Agent

gpadmin用户执行如下步骤。

1、使用gpperfmon_install命令,Greenplum安装完成后已经包含该命令。安装后会建立名为gpperfmon的数据库,默认使用gpmon用户。命令行中红色部分为系统用户gpmon的密码。

gpperfmon_install --enable --password gpmon --port 5432

2、重启GP数据库

gpstop -r

3、确认监控采集进程是否已经启动。

ps -ef |grep gpmmon

4、确认Agent写入的数据是否正常,检查是否有记录写入。

psql -d gpperfmon -c 'select * from system_now;'

5、拷贝Master主机拷贝配置文件到Standby Master的相应目录

scp $MASTER_DATA_DIRECTORY/pg_hba.conf smdw:$MASTER_DATA_DIRECTORY/
scp ~/.pgpass smdw:~/

11.2 安装CommandCenter控制台

见博客

第十二章 AIX下安装工具包

如果客户需要在AIX环境中访问和连接GP数据库以及部署ETL应用(需要使用gpfdist)是,则需要安装相应的几个GP工具包:

greenplum-clients-4.2.1.0-build-2-AIX5-powerpc_64:包含psql和pgadmin等客户端工具
greenplum-connectivity-4.2.1.0-build-2-AIX5-powerpc_64:包含ODBC和JDBC接口驱动。另外JDBC的jar版本包含三个列举如下,需要根据主机所使用的JDK版本:

postgresql-8.3-605.jdbc2ee.jar(JDK1.3)

postgresql-8.4-701.jdbc3.jar(JDK1.4、JDK1.5)

postgresql-8.4-701.jdbc4.jar(JDK1.6)

greenplum-loaders-4.2.1.0-build-2-AIX5-powerpc_64:包含gpfdist工具
由于GP工具包的打包方式问题,因此在AIX环境中安装需要有Linux相对应的几个工具包:bash与gtar。否则无法安装bin包。

首先需要在AIX中安装如下版本的rpm包:

bash-3.2-1.aix5.2.ppc.rpm
tar-1.14-2.aix5.1.ppc.rpm

并且GP工具包必须要使用bash运行,执行如下:

bash ./greenplum-loaders-4.2.1.0-build-2-AIX5-powerpc_64.bin

第十三章 附录

13.1 dd测试

有时候需要使用dd命令测试磁盘IO性能。测试命令如下:

并发写测试:

dd if=/dev/zero of=/data1/a.test bs=32k count=520000 &
dd if=/dev/zero of=/data1/b.test bs=32k count=520000 &

并发读测试:

dd if=/data1/a.test of=/dev/null bs=32k count=520000 &
dd if=/data1/b.test of=/dev/null bs=32k count=520000 &

13.2 多次初始化

Greenplum数据库可以多次初始化,前提是每次初始化的数据目录(Master和Segment的数据目录)必须不相同。

gpstartgpstop可以通过-d参数指定Master数据库目录,启动不同的数据库。如果不指定-d参数,系统则默认使用~/.bashrc文件中所设置的MASTER_DATA_DIRECTORY

同时只能启动一个GP数据库

13.3 反复初始化数据库

重新初始化数据库有两种方法:

第一种:如果数据库初始化失败,则使用初始化过程中生成的一个Backout脚本清除安装失败留下垃圾文件和目录(不一定能成功)。

第二种:如果数据库初始化失败,可关闭数据库,删除所有数据目录,再执行一次数据库初始化命令。该方法实践证明定能成功,在这个过程中,可能会出现多机信任key验证不通过的问题,可参考附录“重新建立多机信任密钥问题”章节进行处理。具体步骤如下:

(1)关闭Greenplum数据库(非常关键)

gpstop

(2)删除所有Greenplum数据库目录

Master主机及Standby Master主机:

rm -rf /data/master

Segment主机:

rm -rf /data/primary

如果segment有创建备实例,则还需另删除mirror数据目录

rm -rf /data/mirror

(3)重新创建Greenplum数据库目录

Master主机及Standby Master主机:

mkdir -p /data/master

Segment主机:

mkdir -p /data/primary

如果segment有创建备实例,则还需另创建mirror数据目录

mkdir -p /data/mirror

(4)初始化数据库

gpinitsystem -c /usr/local/greenplum-db/gpconfigs/gpinitsystem_config -s smdw

13.4 安装后修改数据库参数(非必要)

Greenplum数据库正常安装以后,数据库参数配置允许根据客户的实际情况进行修改。一般情况下不建议主动修改数据库参数。因此本步骤暂时放到附录中。

数据库参数修改方法是修改数据目录(MASTER_DATA_DIRECTORY)下的postgresql.conf配置文件。然后根据参数的定义,重新装载配置文件或者重启数据库。

说明:

Local是指每台服务器的配置文件都需要修改;

Master是指只需要在master主机上修改;

Restart是指需要重启数据库;

Reload是指运行gpstop –u重新装载配置参数即可。

参数名称 参数类型 参考值 设置说明
max_connections integer 200 Local,restart
max_prepared_transactions integer 200 Local,restart
gp_interconnect_setup_timeout String 3min Master,reload
max_fsm_pages integer 200000 Local,restart
max_fsm_relations integer 1000 Local,restart
gp_vmem_protect_limit integer 8192 Local,restart
work_mem String 32MB Master,reload
stats_queue_level boolean off Master,reload

13.5 安装Greenplum clients

【安装机器】:ETL主机

如果是压缩文件则先解压:

unzip greenplum-clients-4.1.1.0-build-4-RHEL5-x86_64.zip
/bin/bash greenplum-clients-4.1.1.0-build-4-RHEL5-x86_64.bin

修改该主机需要用到client和loaders工具的用户的~/.bashrc配置,增加

source /usr/local/greenplum-clients-4.1.1.0-build-4/greenplum_clients_path.sh

13.6 安装Greenplum loader

【安装机器】:ETL主机

如果是压缩文件则先解压:

unzip greenplum-loaders-4.1.1.0-build-4-RHEL5-x86_64.zip
/bin/bash greenplum-loaders-4.1.1.0-build-4-RHEL5-x86_64.bin

修改Master主机需要用到client和loaders工具的用户的~/.bashrc配置,增加

source /usr/local/greenplum-loaders-4.1.1.0-build-4/greenplum_loaders_path.sh

13.7 常见问题处理

13.7.1 字符集问题处理

当加载数据出现如下报错信息:

character 0xd620 of encoding “GB18030” has no equivalent in “UTF8” (seg10 slice1 sdw3:40002 pid=6533) 2012-02-03 09:10:55 - DETAIL: External table

是由于GP(postgreSQL)在字符集转换时遇到非法字符会报错。通过补丁包(更新动态链接库)在遇到非法字符时掠过。

目前补丁包有:

Redhat5.5及GP4.1版本 :utf8_and_gbk.so

Redhat5.5及GP4.2版本 :utf8_and_gb18030.so

该补丁包,在遇到数据导入无法转换的问题后才采用。

操作方法:

替换$GPHOME/lib/postgresql(/usr/local/greenplum-db/lib/postgresql)目录下替换相应文件,注意备份,重启数据库后即可生效。

13.7.2 重新建立多机信任密钥问题

在Greenplum的重新安装或者重新初始化数据库过程中,由于在各主机建立了多机信任机制,所以经常会出现输入正确的主机密码系统却报错,或者在重新初始化数据库过程中,各主机互相通信失败而导致初始化失败。引起该问题主要是Greenplum各主机在建立多机信任时按规则彼此创建了相互通信的密钥对,写入了known_hosts文件中,当主机名被修改,或者重复创建多机信任等,即会出现主机通信密钥出错而失败。

解决该问题步骤:

(1)打开密钥存放文件/root/.ssh/known_hosts,将需要重新建立互信机制的主机的所有密钥信息删除;

(2)重新建立多机信任

Root用户:

gpssh-exkeys -f /usr/local/greenplum-db/gpconfigs/all_hosts

gpadmin用户:

gpssh-exkeys -f /usr/local/greenplum-db/gpconfigs/all_hosts
13.7.3 卸载gpcc
  1. 停止数据库监控程序perfmon,并删除安装文件目录
$gpperfmon –stop
$rm -rf /usr/local/greenplum-perfmon-web-4.1.X.X
  1. 编辑postgresql.conf文件,禁用greenplum的perfmon功能
#su – gpadmin
$vi $MASTER_DATA_DIRECTORY/postgresql.conf
gp_enable_gpperfmon = off
  1. 编辑gp_hba.conf
# local gpperfmon gpmon md5
# host gpperfmon gpmon 0.0.0.0/0 md5
  1. 删除role和数据库
$psql template1 -c ‘drop role gpmon’
$dropdb gpperfmon
  1. 最后将gpperfmon的相关安装文件删除 $rm -rf
$MASTER_DATA_DIRECTORY/gpperfmon/data/*
$rm -rf $MASTER_DATA_DIRECTORY/gpperfmon/data/*
  1. 重启数据库
$gpstop
$gpstart

猜你喜欢

转载自blog.csdn.net/zynzxx/article/details/89553658