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

Greenplum的架构如图所示:

其中每台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.149  mdw1

10.12.42.150  sdw1

10.12.42.151  sdw2

10.12.42.152  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

1.7      设置预读块的值

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

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

然后再对磁盘进行设置:

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

2     下载并上传greenplum安装包

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

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

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

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

执行解压命令:

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

生成两个文件:

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

3     安装GP

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

mkdir /opt/greenplum/ greenplum-db-5.1.0

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

3.2 安装greenplum

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

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

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

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

/usr/local/ greenplum-db-5.1.0

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

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.1.0目录下

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

文件内容如下:

mdw1

sdw1

sdw2

sdw3

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

内容如下:

sdw1

sdw2

sdw3

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

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

source greenplum_path.sh

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

[gpadmin@mdw1 greenplum-db-5.1.0]$ gpssh-exkeys -f  /usr/local/greenplum-db-5.1.0 /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.1.0]$ gpssh -f all_hosts

=> pwd

[  mndw1] /home/gpadmin

[sdw1] /home/gpadmin

[sdw2] /home/gpadmin

[sdw3] /home/gpadmin

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

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

tar -cf gp5.1.0.tar greenplum-db-5.1.0/

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

gpscp -f ./greenplum-db-5.1.0/hostlist  gp5.1.0.tar  =:/usr/local/greenplum

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

然后在gpssh命令建立软连接

=> ln -s greenplum-db-5.1.0 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.1.0/greenplum_path.sh

export MASTER_DATA_DIRECTORY=/data/masterdata/gpseg-1

export PGPORT=5432

export PGDATABASE=EDW

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

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

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

source /etc/profile

3.10      初始化数据库

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

gpinitsystem -c initgp_config  -s  sdw3

最后成功截图:

3.11      修改gpadmin密码

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

psql

alter role gpadmin password 'GpadenV@#0';

转载于:https://www.cnblogs.com/nanshanjushi/p/11324530.html

在CentOS7.x版本上搭建Greenplum5.1.0数据库详细步骤讲解相关推荐

  1. 服务器上搭建Lepus——开源的数据库监控系统

    服务器上搭建Lepus--开源的数据库监控系统 由于公司业务需求,要我搭建一个数据库监控平台,我就在git上找开源的监控平台,于是找到了Lepus这个开源系统,把搭建的过程记录下来,方便日后学习. 一 ...

  2. 在MAC上搭建cordova3.4.0的IOS和android开发环境

    Hello,大家好,今天给大家说说在mac上搭建cordova3.4.0的IOS和android开发环境,首先下载cordova,地址:https://cordova.apache.org/#down ...

  3. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...

  4. C++版本计算n阶乘末尾0的个数原理讲解及代码实现

    C++版本计算n阶乘末尾0的个数原理讲解及代码实现 /*! * Copyright (c) 2020,ZYF. * All Rights Reserved. * * \file Factorial.c ...

  5. 空间里相片批量导入u盘_如何将手机中的照片、视频快速的保存到U盘上?3分钟教你详细步骤...

    原标题:如何将手机中的照片.视频快速的保存到U盘上?3分钟教你详细步骤 手机拍照功能是越来越强大了.生活中,不少的朋友都喜欢拍照.拍着拍着不知不觉就存了许多的照片,占用很大的空间.手机照片和视频都是我 ...

  6. Squid代理服务器应用(服务搭建详细步骤讲解)

    Squid代理服务器应用(服务搭建详细步骤讲解) 文章目录 一.代理的工作机制 二.Squid 代理的类型 三.Squid部署 (一).安装 Squid 服务 (二).构建传统代理服务器 (三).构建 ...

  7. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 上

    文章目录 1 数据集描述 2 GPU设置 3 设置Dataset类 4 设置辨别器类 5 辅助函数与辅助类 1 数据集描述 此项目使用的是著名的celebA(CelebFaces Attribute) ...

  8. 使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成 上

    阅读提示:本篇文章的代码为在普通GAN代码上实现人脸图片生成的修改,文章内容仅包含修改内容,全部代码讲解需结合下面的文章阅读. 相关资料链接为:使用PyTorch构建GAN生成对抗 本次训练代码使用了 ...

  9. CentOS 7上搭建Spark 3.0.1 + Hadoop 3.2.1分布式集群

    CentOS 7上搭建Spark3.0.1+ Hadoop3.2.1分布式集群 VMWare 安装CentOS 7 使用Xshell连接虚拟机 集群设置 安装JDK 1.8 SSH 免密登陆 安装ha ...

最新文章

  1. 每个php允许的内存大小,php – 允许的内存大小为262144字节用尽(试图分配24576字节)...
  2. 16进制/10进制数转化为浮点型案例
  3. 一个客户端对应一个线程
  4. MongoDB语法与现有关系型数据库SQL语法比较
  5. Jsp+Servlet+Mysql实现的在线图书商城源码
  6. Exponential notation 思维题
  7. 强烈推荐 16 款 IDEA 插件,让你的开发速度飞起来 | 原力计划
  8. C# 直接选择排序(史上最清晰,最通俗)
  9. mysql汪晓青课后答案_MySQL数据库基础实例教程
  10. 《朝歌封神录》10.22正式上线链游玩家|山海异闻、奇幻仙侠
  11. 使用聚合数据接口发送短信
  12. 【智能优化算法-正弦余弦算法】基于反向正弦余弦算法求解高维优化问题附matlab代码
  13. 苹果手机10秒解除锁屏_苹果密码忘了不想刷机怎么办_苹果手机10秒解除锁屏
  14. 如何做服务器安全维护,网站安全维护怎么做好
  15. 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库
  16. 与其说项羽败给刘邦,还不如说他输给了人情
  17. 利用迭代公式求平方根。
  18. 清除浮动的四种样式写法
  19. Apache Server搭建图片服务器
  20. 医院信息系统基本功能规范(4)

热门文章

  1. Finereport使用记录
  2. Windows -- 如何解决 Chrome 谷歌浏览器无法访问https网站的问题
  3. jpg中读取GPS信息
  4. 了解动作电位的传导机制
  5. 华为mate40参数对比 华为mate40和mate40pro的区别
  6. 网易我的世界手机如何玩java 版_我的世界手游版如何操作 网易我的世界手游怎么玩...
  7. oracle关于删除的触发器,oracle数据库删除触发器实例
  8. 怎么输入MathType不等号
  9. JS纯前端实现audio音频剪裁剪切复制播放与上传
  10. 生成黑白棋盘标定图和单目相机标定(一)(python+opencv实现)