在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解

        Greenplum是一个关系型数据库集群,它是由数个独立的数据库服务组成的逻辑数据库。Greenplum使用的是Shared-Nothing架构,这个就能由很多歌数据节点(segment)和控制管理节点(Master Host)组成,其中每个物理节点上可以运行多个数据库。

在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第1张图片

 

Greenplum的架构如图所示:

在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第2张图片

 

其中每台Segment节点有多个Postgres数据库实例,每个节点相对独立。在典型的Shared-Nothing架构中,每一个节点的所有资源(CUP,内存,磁盘)都是独立的,每个节点都只有全部数据的一部分,也只能访问本节点的资源。

  本文第一部分简单讲解下Greenplum的数据库架构及简介。接下来我会详细讲解数据库安装的详细步骤。

一. 安装环境初始化

本次安装greenplum到四台CentOS 7.4主机上。

服务器信息和安装策略如下:

角色

节点IP地址

主机名

master

10.12.42.149

mdw1  

segment1

10.12.42.150

sdw1

segment2

10.12.42.151

sdw2

segment3和master standby

10.12.42.152

sdw3

       

1.1 创建数据库用户

先删除原有用户和组;

#groupdel gpadmin;

#userdel gpadmin;

创建新的用户和用户组

groupadd -g 530 gpadmin;

useradd -g 530 -u 530 -d /home/gpadmin  -s /bin/bash gpadmin对文件夹进行赋权,为新建用户创建密码

chown -R gpadmin:gpadmin /home/gpadmin/;

passwd gpadmin

Changing password for user gpadmin.

New UNIX password:

Retype new UNIX password

 

安装用户:gpadmin

密码:Gpad#@012

1.2 检查各节点防火墙是否关闭状态

在各个节点都查看防火墙是否关闭。在CentOS操作系统防火墙服务一般使用firewall。

查看firewall服务状态

systemctl status firewalld

 

 

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

 

对于IPTABLES命令,关闭防火墙的方法为:

 永久性生效

开启:chkconfig iptables on

关闭:chkconfig iptables off

 

1.3 节点间建立互信(root用户下)

Gpadmin用户下的互信后面可以使用gpssh命令可以进行,现在只是打通各个节点之间在root用户下的节点互信,只是为了传输文件的方便起见,root用户下的互信可以不用做。

  1. 配置网络(hosts)

作为分布式的集群,每个节点都需要彼此通信,要在4个GP的节点都配置hosts文件。

Vi /etc/hosts

新增这几行

#BEGIN_GROUP_CUSTOMER

10.12.42.150  mdw1

10.12.42.151  sdw1

10.12.42.152  sdw2

10.12.42.149  sdw3

 

2.节点间建立互信:

具体步骤如下:

2.1 在各节点ssh-keygen生成RSA密钥和公钥

使用root用户登录,然后在集群中的4个节点上分别执行以下命令,生成公私钥:(每个节点都要操作)

ssh-keygen -q -t rsa  -N "" -f  ~/.ssh/id_rsa

2.2 将所有的公钥文件汇总到一个总的授权key文件中

在149节点上执行以下命令:

ssh 10.12.42.149  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;

ssh 10.12.42.150 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;

ssh 10.12.42.151 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;

ssh 10.12.42.152 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;

然后就会在10.12.42.149这台机器上产生一个包含了所有节点公钥的文件authorized_keys。

2.3 出于安全性考虑,将这个授权key文件赋予600权限:

chmod  600 ~/.ssh/authorized_keys

2.4 将authorized_keys远程拷贝到其他几个节点:

 scp ~/.ssh/authorized_keys 10.12.42.150:~/.ssh

scp ~/.ssh/authorized_keys 10.12.42.151:~/.ssh

scp ~/.ssh/authorized_keys 10.12.42.152:~/.ssh

2.5 验证互信是否成功

 验证互信,各节点执行下面命令,能不输入密码显示时间,配置成功

ssh 10.12.42.149 date;ssh 10.12.42.150 date;ssh 10.12.42.151 date;ssh 10.12.42.152 date;

说明节点间互信已经建立成功。

1.4 关闭4个节点的selinux配置

Vi /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

#SELINUX=enforcing

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

1.5 修改各个节点共享内存、网络、信号量、用户限制等,修改/etc/sysctl.conf

# Controls whether core dumps will append the PID to the core filename.

# Useful for debugging multi-threaded applications.

kernel.core_uses_pid = 1

 

# Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

 

# Controls the default maxmimum size of a mesage queue

kernel.msgmnb = 65536

 

# Controls the maximum size of a message, in bytes

kernel.msgmax = 65536

 

# Controls the maximum shared segment size, in bytes

#kernel.shmmax = 68719476736

kernel.shmmax = 500000000

# Controls the maximum number of shared memory segments, in pages

#kernel.shmall = 4294967296

kernel.shmall = 4000000000

kernel.shmmni = 4096

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 让内核参数生效。

 

1.6        在4个节点配置/etc/security/limits.conf文件

vi /etc/security/limits.conf

 

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第3张图片

 

1.7      设置预读块的值

设置预读块的值为16384;  16384:数据仓库的最大特点是用于保存历史数据,存在大量的数据操作,包括增删改查,当设置的块越大时读取性能越高;16384是greenplum数据库要求的最低要求。

先通过df –h查看数据库磁盘挂载情况,通过fsisk –l进行查看到底有多少的磁盘和磁盘分区

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第4张图片

在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第5张图片

 

 

然后再对磁盘进行设置:

/sbin/blockdev --setra 16384   /dev/vdb

 

1.8 设置操作系统用户的limit限制

vim  /etc/security/limits.d/20-nproc.conf

 

*          soft    nproc     40960

root       soft    nproc     unlimited

 

默认的除了root以外其他用户的最大进程数都现在为4096,这个对于数据用户来说太小了,可以把这个数值修改为40960.

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第6张图片

 

 

2     下载并上传greenplum安装包

2.1 下载gp5.15.1版本的安装包

下载地址:https://network.pivotal.io/products/pivotal-gpdb#/releases/253113

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第7张图片

 

2.2 上传gp安装包文件到master节点

将文件greenplum-db-5.15.1-rhel7-x86_64.zip 上传到/opt/greenplum目录下

执行解压命令:

Unzip greenplum-db-5.15.1-rhel7-x86_64.zip

生成两个文件:

greenplum-db-5.15.1-rhel7-x86_64.bin和greenplum-db-5.15.1-rhel7-x86_64.bin.sha256

3     安装GP

3.1  创建安装目录并进行授权

 mkdir /opt/greenplum/ greenplum-db-5.15.1

chomod –R  777  /usr/local/ greenplum-db-5.15.1

 

3.2 安装greenplum

通过执行greenplum-db-5.15.1-rhel7-x86_64.bin进行数据库安装

./ greenplum-db-5.15.1-rhel7-x86_64.bin

 

以下截图是之前安装4.3.9.1的截图,步骤与5.15.1一致。

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第8张图片

 

这块的安装路径需要自己输入一个目录作为gp的安装路径。默认路径是:

/usr/local/ greenplum-db-5.15.1

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第9张图片

 

安装完之后,目录如下,initgp_config,hostlist,seglist是后面配置的。

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第10张图片

 

3.3 相关的文件说明

greenplum_path.sh:Greenplum数据库环境变量文件
GPDB-LICENSE.txt:Greenplum许可协议
bin:管理工具、客户端程序及服务程序
demo:示例程序
docs:帮助文档
etc:OpenSSL的配置示例
ext:一些GP工具使用的捆绑程序
inlcude:C头文件
lib:库文件
sbin:支持的或者内部的脚本和程序
share:共享文件

3.4 配置all_hosts和seg_hosts

我是把这两个文件放在了目录:

/usr/local/greenplum-db-5.15.1目录下

vim /usr/local/greenplum-db-5.15.1/all_hosts

文件内容如下:

mdw1

sdw1

sdw2

sdw3

vim /usr/local/greenplum-db-5.15.1/seg_hosts

内容如下:

sdw1

sdw2

sdw3

 

3.5 使用gpssh-exkeys打通所有服务器,实现gpadmin用户下的节点间的互信

Greenplum的环境变量已经在greenplum_path.sh中设置了,这里需要查看下这个变量是否正确,然后再source这个环境变量脚本,使其生效。

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第11张图片

 

 

source greenplum_path.sh

  然后通过gp-exkeys命令打通节点:

 [gpadmin@mdw1 greenplum-db-5.15.1]$ gpssh-exkeys -f  /usr/local/greenplum-db-5.15.1 /all_hosts

[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 sdw1

  ... send to sdw2

  ... send to sdw3

 

[STEP 4 of 5] determine common authentication file content

 

[STEP 5 of 5] copy authentication files to all remote hosts

  ... finished key exchange with sdw1

  ... finished key exchange with sdw2

  ... finished key exchange with sdw3

 

[INFO] completed successfully

 

说明节点已经打通。然后下一步用gpssh再验证下gpadmin用户下互信是否成功。

3.6 使用gpssh命令批量操作

打通所有机器的通道后就可以使用gpssh对所有机器进行批量操作了。

[gpadmin@mdw1 greenplum-db-5.15.1]$ gpssh -f all_hosts

=> pwd

[  mndw1] /home/gpadmin

[sdw1] /home/gpadmin

[sdw2] /home/gpadmin

[sdw3] /home/gpadmin

3.7 将软件分发到每一台主机上

在MASTER节点上将GP软件打包,然后分发到其他数据节点

tar -cf gp5.15.1.tar greenplum-db-5.15.1/

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第12张图片

 

然后利用gpscp命令将这个文件复制到一台机器上

gpscp -f ./greenplum-db-5.15.1/hostlist  gp5.15.1.tar  =:/usr/local/greenplum

使用gpssh命令批量解压各个节点的gp安装文件。

 

 

然后在gpssh命令建立软连接

=> ln -s greenplum-db-5.15.1 greenplum-db

3.8 数据库目录的创建和规划

10.12.42.149作为MASTER节点,10.12.42.150,10.12.42.151,10.12.42.152作为数据库的数据节点。并且10.12.42.152作为MASTER的standby备节点。

各个节点的数据库目录情况如下:

10.12.42.149

/data/master

10.12.42.150~10.12.42.151:

/data/primary

/data/mirror

 

10.12.42.152

/data/primary

/data/mirror

/data/master

其中在151-152三个物理节点中,primary 作为primary数据库实例目录,mirror作为mirror实例数据库目录。

3.9 配置/etc/profile

新增下面几行配置到/etc/profile

 

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

export MASTER_DATA_DIRECTORY=/data/masterdata/gpseg-1

export PGPORT=5432

export PGDATABASE=EDW

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第13张图片

 

MASTER_DATA_DIRECTORY参数是MASTER数据库实例的数据目录

将PostgreSQL实例的端口和默认登陆的数据库名称设置在/etc/profile中,直接就可以使用psql就可以登陆到EDW数据库中。

配置完之后,然后source下配置的信息:

source /etc/profile

3.10      初始化数据库

使用gpinisystem脚本来初始化数据库

 gpinitsystem -c initgp_config  -s  sdw3

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第14张图片

 

最后成功截图:

 在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解_第15张图片

 

3.11      修改gpadmin密码

然后可以通过psql命令进入到Greenplum数据库中进行gpadmin管理员用户密码的修改:

psql

alter role gpadmin password 'GpadenV@#0';

 

 

 

 

你可能感兴趣的:(在CentOS7.x版本Linux服务器上搭建Greenplum5.15.1数据库详细步骤讲解)