这两天接触了greenplum分布式数据库,发现挺有意思的,接下来将介绍如何安装丶部署greenplum数据库。读者在完成本篇阅读之后,可以根据本篇给出的步骤在自己的环境里快速搭建一个greenplum数据库系统。

软件版本centos7+gp-5.20.0
安装是以一个master node,以及两个segment node进行安装。

一丶配置要求

1.集群IP配置

192.168.64.129  (master)
192.168.64.130	(segment1)
192.168.64.131	(segment2)

2.修改各节点本机名
通过vim /etc/hostname进行修改
本次测试本机名分别为:master丶seg1丶seg2

3.配置host ip主机映射(所有节点)
通过vim /etc/hosts进行修改

192.168.64.129 master
192.168.64.130 seg1
192.168.64.131 seg2

主节点修改完成通过scp命令传到所有segment子节点
[root@gp etc]# scp hosts seg1:/etc root@seg1’s password:
hosts 100% 220 73.9KB/s 00:00

4.测试一下是否可以通过ping主机名来找到对应的服务器

ping master
ping seg1
ping seg2

(测试成功,若失败请重新配置hosts文件)

5.创建用户和用户组

groupadd gpadmin  	(创建用户组gpadmin)
useradd gpadmin -g gpadmin 		(创建用户gpadmin由gpadmin用户组管理)
passwd gpadmin   (修改登录密码)

6.修改系统内核参数(所有节点)

vim /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.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

添加完成 sysctl -p (让配置生效)
接着通过scp命令将文件复制到所有segment子节点生效(也可以复制粘贴)

scp /etc/sysctl.conf seg2:/etc
scp /etc/sysctl.conf seg2:/etc

7.编辑文件限制参数文件(所有节点)

vim /etc/security/limits.conf

将以下参数添加进去

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

主节点配置完成后复制到所有segment子节点(复制方法参考第6步格式)

8.关闭防火墙(所有节点)

systemctl stop firewalld
systemctl disable firewalld

9.设置selinux为disabled

vim /etc/selinux/config

selinux=disabled

二丶greenplum数据库的安装部署

10.安装master节点
本次安装使用rpm包进行安装

10.1到rpm安装包目录下,以root用户执行以下命令开始安装软件

rpm -Uvh greenplum-db-5.20.0-rhe16-x86_64.rpm

greenplum将自动安装在/usr/local/greenplum-db-目录下

10.2安装完成,把greenplum安装目录权限授权给gpadmin用户:

chown -R gpadmin /usr/local/greenplum-db-<version>
chgrp -R gpadmin /usr/local/greenplum-db-<version>

11.安装其他节点
一个master节点的安装完成之后,我们要在其他节点安装greenplum。
首先,要以root用户执行gpseginstall命令,这个命令会将当前节点greenplum的安装文件复制到其他指定节点上
涉及的操作包括在:这些节点创建greenplum操作用户,设置默认密码,设置greenplum的安装目录权限,在节点间交换ssh key
具体方法如下:

11.1以root用户登录master节点,执行以下命令source命令应用环境变量

source /usr/local/greenplum-db-5.20.0/greenplum_path.sh

11.2创建一个文件名为hostfile_exkeys的文本文件,其中包含所有节点,比如master丶standby master丶segment节点的主机名(本次安装只安装master+segment节点)
添加主机名

master
seg1
seg2

11.3运行gpseginstall命令,使用-f选项指定包含各节点操作列表的文件,该命令会把greenplum二进制文件复制安装到其他节点,并且创建greenplum操作用户和密码。

gpseginstall -f hostfile_exkeys

11.4完成上述步骤之后,需要验证是否已经正确安装greenplum。以gpadmin用户运行以下命令

source /usr/local/greenplum-db-5.20.0/greenplum_path.sh

然后,使用命令查看各节点是否已经安装greenplum

gpssh -f hostfile_exkeys -e ls -l $GPHOME

[gpadmin@master greenplum-db-5.20.0]$ gpssh -f hostfile_exkeys -e ls -l $GPHOME
[ seg1] ls -l /usr/local/greenplum-db/.
[ seg1] total 36
[ seg1] drwxr-xr-x 7 gpadmin gpadmin 4096 Sep 15 06:16 bin
[ seg1] drwxr-xr-x 4 gpadmin gpadmin 37 Sep 15 06:16 docs
[ seg1] drwxr-xr-x 2 gpadmin gpadmin 98 Sep 15 06:16 etc
[ seg1] drwxr-xr-x 3 gpadmin gpadmin 20 Sep 15 06:16 ext
[ seg1] -rwxr-xr-x 1 gpadmin gpadmin 737 Sep 15 06:17 greenplum_path.sh
[ seg1] -rw-r–r-- 1 gpadmin gpadmin 17 Sep 15 21:49 hostfile_exkeys
[ seg1] drwxr-xr-x 6 gpadmin gpadmin 4096 Sep 15 06:16 include
[ seg1] drwxr-xr-x 7 gpadmin gpadmin 8192 Sep 15 06:16 lib
[ seg1] drwxr-xr-x 7 gpadmin gpadmin 93 Sep 15 06:17 pxf
[ seg1] drwxr-xr-x 2 gpadmin gpadmin 4096 Sep 15 06:17 sbin
[ seg1] drwxr-xr-x 4 gpadmin gpadmin 41 Sep 15 06:17 share
[ seg2] ls -l /usr/local/greenplum-db/.
[ seg2] total 36
[ seg2] drwxr-xr-x 7 gpadmin gpadmin 4096 Sep 15 06:16 bin
[ seg2] drwxr-xr-x 4 gpadmin gpadmin 37 Sep 15 06:16 docs
[ seg2] drwxr-xr-x 2 gpadmin gpadmin 98 Sep 15 06:16 etc
[ seg2] drwxr-xr-x 3 gpadmin gpadmin 20 Sep 15 06:16 ext
[ seg2] -rwxr-xr-x 1 gpadmin gpadmin 737 Sep 15 06:17 greenplum_path.sh
[ seg2] -rw-r–r-- 1 gpadmin gpadmin 17 Sep 15 21:49 hostfile_exkeys
[ seg2] drwxr-xr-x 6 gpadmin gpadmin 4096 Sep 15 06:16 include
[ seg2] drwxr-xr-x 7 gpadmin gpadmin 8192 Sep 15 06:16 lib
[ seg2] drwxr-xr-x 7 gpadmin gpadmin 93 Sep 15 06:17 pxf
[ seg2] drwxr-xr-x 2 gpadmin gpadmin 4096 Sep 15 06:17 sbin
[ seg2] drwxr-xr-x 4 gpadmin gpadmin 41 Sep 15 06:17 share
[master] ls -l /usr/local/greenplum-db/.
[master] total 40
[master] drwxr-xr-x. 7 gpadmin gpadmin 8192 Sep 15 06:16 bin
[master] drwxr-xr-x. 4 gpadmin gpadmin 37 Sep 15 06:16 docs
[master] drwxr-xr-x. 2 gpadmin gpadmin 98 Sep 15 06:16 etc
[master] drwxr-xr-x. 3 gpadmin gpadmin 20 Sep 15 06:16 ext
[master] -rwxr-xr-x. 1 gpadmin gpadmin 737 Sep 15 06:17 greenplum_path.sh
[master] -rw-r–r-- 1 gpadmin gpadmin 17 Sep 15 21:49 hostfile_exkeys
[master] drwxr-xr-x. 6 gpadmin gpadmin 4096 Sep 15 06:16 include
[master] drwxr-xr-x. 7 gpadmin gpadmin 8192 Sep 15 06:16 lib
[master] drwxr-xr-x. 7 gpadmin gpadmin 93 Sep 15 06:17 pxf
[master] drwxr-xr-x. 2 gpadmin gpadmin 4096 Sep 15 06:17 sbin
[master] drwxr-xr-x. 4 gpadmin gpadmin 41 Sep 15 06:17 share

11.5如果安装成功,不需要用户手动输入其他节点的登录密码,就会显示所有安装节点的安装目录,这些节点都应该有相同的安装目录,并且这些目录都属于goadmin用户。
如果要求输入登录密码,就需要重新执行ssh key交换命令

gpssh-exkeys -f hostfile_exkeys

用户可根据自己的实际需要,选择安装其他扩展模块

12.初始化greenplum数据库
通常,要初始化一个greenplum数据库,首先要创建一个新的初始化配置文件,并根据实际情况修改相关参数;然后,使用gpinitsystem脚本来初始化数据库,该命令会在master节点丶standby节点,以及所有的segment节点上初始化数据库。初始化完成后,用户就可以使用greenplum数据库对数据进行各种操作

12.1vim一份配置文件

vim /home/gpadmin/gpconfigs/gpinitsystem_config

将下面参数添加进去,具体参数值请根据自己情况修改

ARRAY_NAME="Greenplum DW"
SEG_PREFIX=gpseg
PORT_BASE=6000 
declare -a DATA_DIRECTORY=(/data1/primary )
MASTER_HOSTNAME=master   --(注意是真实的host名)
MASTER_DIRECTORY=/data1/master 
MASTER_PORT=5432 
TRUSTED SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE

如果没有创建相关目录,可以使用gpssh命令批量创建,并修改所有者为goadmin用户(如果已经创好相应目录请忽略)

gpssh -f hostfile_exkeys -e mkdir -p /data1/primary
gpssh -f hostfile_exkeys -e chown gpadmin /data1/primary
gpssh -f hostfile_exkeys -e chgrp gpadmin /data1/primary

如果需要配置mirror segment,则添加相关配置参数,本次演示略过

13.初始化命令

cd~
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem

如果集群中包含standby master,则需要在初始化命令中加上-s选项并指明standby master的主机名。如果同时需要初始化mirror segment节点,就需要使用-S选项。

至此一个greenplum数据库已经初始化成功
如果没有成功,请根据日志查找报错原因并修复。

14.设置gpadmin用户的环境变量,不然每次切换用户都得重新应用环境变量

vim /home/gpadmin/.bash_profile

添加以下内容

source /usr/local/greenplum-db-5.20.0/greenplum_path.sh 
export MASTER_DATA_DIRECTORY=/data1/gpadmin/master/gpseg-1
export GPPORT=5432
export PGDATABASE=postgres

应用 source /home/gpadmin/.bash_profile

三丶测试登录greenplum

[gpadmin@master ~]$ *psql*
psql (8.3.23)
Type “help” for help.

postgres=# create table demo (id int) distributed by (id); CREATE TABLE
postgres=# insert into demo values(1);
INSERT 0 1
postgres=# insert into demo values(2);
INSERT 0 1
postgres=# select * from demo;
id
----
2
1
(2 rows)

一个简单的greenplum数据库部署完成。