Greeplum 系列(二) 安装部署

本章将介绍如何快速安装部署 Greenplum,以及 Greenplum 的一些常用命令及工具。本章不会涉及硬件选型、操作系统参数讲解、机器性能测试等高级内容,这些会在 “第8章 Greenplum 线上环境部署” 中介绍。

2.1 软件安装及数据库初始化

下面先介绍如何搭建一个完整的 Greenplum 环境。在搭建环境之前,我们必须对 Greenplum 的架构有一定的了解,并且准备好安装部署的机器,机器硬件、操作系统的安装配置读者可自行完成。

2.1.1 Greenplum 架构

在安装数据库的时候,我们先要对 Greenplum 架构有一定的了解,这样可以对数据库的安装和使用起到一个指导性的作用。同时在搭建 Greenplum 环境的过程中,可以加深对 Grenplum 架构的理解。 Greenplum 总体架构构图如图 2-1 所示。

图2-1 Greenplum架构

下面介绍每个部件的主要功能,如表 2-1 所示。

表 2-1 Master 主机与 Segment 主机对比

Master 主机Segment 主机
建立与客户端的会话连接和管理业务数据的存储和存取
SQ L的解析并形成分布式的执行计划执行由 Master分发的SQL语句
将生成好的执行计划分发到每个 Segment 上执行对于 Master来说,每个 Segment都是对等的,负责对应数据的存储和计算
收集 Segment 的执行结果每一台机器上可以配置一到多个 Segment
Master 不存储业务数据,只存储数据字典由于每个 Segment 都是对等的,建议采用相同的机器配置
Master主机可以一主一备,分布在两台机器上Segment 分 primary 和 mirror 两种,一般交错地存放在子节点上
为了提高性能,Master 最好单独占用一台机器...

通过图 2-2 可以看出 Master 与 Segment 的关系。

图2-2 Master与Segment的关系

Master 和 Segment 其实都是一个单独的 PostgreSQL 数据库。每一个都有自己单独的套元数据字典,在这里, Master 节点一般也叫主节点, Segment 也叫做数据节点。

Segment 节点与 Master 节点的通信,通过千兆(或万兆)网卡组成的内部连接(InterConnect),在同一台数据节点机器上可以放多个 Segment,不同的 Segment 节点会被赋予不同的端口,同时, Segment 之间也不断地进行着交互。为了实现高可用,每个 Segment 都有对应的备节点( Mirror Segment),分别存在于不同的机器上。

Client 一般只能与 Master 节点进行交互, Client 将 SQL 发给 Master,然后 Master 对 SQL 进行分析后,再将其分配给所有的 Segment 进行操作,并且将汇总结果返回给客户端。

2.1.2 环境搭建

1. 安装 Linux

Greenplun 没有 Windows 版本,只能安装在类 UNIX 的操作系统上。

2. Greenplum 集群规划

节点IP内存硬盘
mdw192.168.2.101512M8G
sdw1192.168.2.102512M8G
sdw2192.168.2.103512M8G

机器对应的 Master 和 Segment 如下分配:192.168.2.101 作为 Master 节点,192.168.2.102~103 作为 Segment 节点,每个机器上配置两个 Primary Segment 和两个 Mirror Segment;同时 192.168.2.103 作为 Master Standy 节点。通过图 2-3 的架构图可以清晰地知道我们所搭建的集群的概况。

4. 网络(hosts)

在确定机器配置的时候,要保证所有机器的网络都是通的,并且每台机器的防火墙都是关闭的,避免存在网络不通的问题。

在配置 /etc/hosts 时,习惯将 Master 机器叫做 mdw,将 Segment 机器叫做做 sdw,配置好后,使用 ping 命令确定所有 hostname 都是通的。

5. 创建用用户及用户组

创建 gpadmin 用户及用户组,将其作为安装 Greenplum 的操作系统用户。

# 删除原有的用户组及用户
groupdel gpadmin
userdel gpadmin

# 添加 gpadmin 用户组和 gpadmin 用户
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin

# 对文件夹赋予权限,为 gpadmin 创建密码
chown -R gpadmin:gpadmin /home/gpadmin/
passwd gpadmin

2.1.3 Greenplum 系统设置

(1) 修改或添加 /etc/sysctl.conf

# for greeplumn
# 共享内存
xfs_mount_options = rw,noatime,inode64,allocsize=16m
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
vm.overcommit_memory = 2

(2) 配置 /etc/security/limits.conf 文件

# number of file 文件的软数量,表示读取文件的最小数
* soft nofile 65536
# number of file 文件的硬数量,表示读取文件的最大数
* hard nofile 65536
# number of process 线程数量
* soft nproc 131072
* hard nproc 131072

(3) 设置磁盘访问 I/O 调度策略

cat /sys/block/sda/queue/scheduler
echo deadline > /sys/block/sda/queue/scheduler
echo deadline > /sys/block/fd0/queue/scheduler
echo deadline > /sys/block/hdc/queue/scheduler

(4) 设置预读块的值为 16384

/sbin/blockdev --getra /dev/sda
/sbin/blockdev --setra 16384 /dev/sda
/sbin/blockdev --setra 16384 /dev/sda1
/sbin/blockdev --setra 16384 /dev/sda2
/sbin/blockdev --setra 16384 /dev/sda3

2.1.4 Greenplum 安装

Greenplum 下载地址: https://network.pivotal.io/products/pivotal-gpdb,选择 Database Server/Greenplum Data Computing Appliance Database Installer 下载。

注意:下载 Greenplum 前需要先注册帐号,如果还不能下载可以将国家设置为国外(如Australia),这里以 greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.zip 为例。

(1) 解压

tar -zxvf greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.zip

# 解压后的文件
greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin

(2) 配置 hostfile 和 seg_hosts

配置 hostfile 文件,将所有的服务器名记录在里面。

vim hostfile

mdw
sdw1
sdw2

seg_hosts 只保存 segment 节点的 hostname

vim seg_hosts

sdw1
sdw2

(3) 执行 greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin

./greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin
# gpseginstall -f hostlist -u gpadmin -p gpadmin
======================================================================
                             Greenplum DB
                    Appliance Automated Installer
----------------------------------------------------------------------
Timestamp ......... : 2018年 05月 27日 星期日 21:17:41 CST
Product Installer.. : greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin
Product Version ... : 4.3.9.0
Build Number ...... : 
Install Dir ....... : /usr/local/GP-4.3.9.0
Install Log file .. : /home/gpadmin/install-270518-211741.log
======================================================================

Creating /usr/local/GP-4.3.9.0
======================================================================
Executing Post Appliance Installation Steps
======================================================================

Executing: source /usr/local/GP-4.3.9.0/greenplum_path.sh

Executing: gpseginstall --file hostfile -c csv 2>&1 | tee -a /home/gpadmin/install-270518-211741.log
20180527:21:19:23:002348 gpseginstall:mdw:root-[INFO]:-Installation Info:
link_name greenplum-db
binary_path /usr/local/GP-4.3.9.0
binary_dir_location /usr/local
binary_dir_name GP-4.3.9.0
20180527:21:19:24:002348 gpseginstall:mdw:root-[INFO]:-check cluster password access
  *** Enter password for mdw: 
20180527:21:19:43:002348 gpseginstall:mdw:root-[INFO]:-de-duplicate hostnames
20180527:21:19:43:002348 gpseginstall:mdw:root-[INFO]:-master hostname: mdw
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-chown -R gpadmin:gpadmin /usr/local/greenplum-db
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-chown -R gpadmin:gpadmin /usr/local/GP-4.3.9.0
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-rm -f /usr/local/GP-4.3.9.0.tar; rm -f /usr/local/GP-4.3.9.0.tar.gz
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-cd /usr/local; tar cf GP-4.3.9.0.tar GP-4.3.9.0
20180527:21:20:31:002348 gpseginstall:mdw:root-[INFO]:-gzip /usr/local/GP-4.3.9.0.tar
20180527:21:21:17:002348 gpseginstall:mdw:root-[INFO]:-remote command: mkdir -p /usr/local
20180527:21:21:19:002348 gpseginstall:mdw:root-[INFO]:-remote command: rm -rf /usr/local/GP-4.3.9.0
20180527:21:21:21:002348 gpseginstall:mdw:root-[INFO]:-scp software to remote location
The authenticity of host 'sdw1 (192.168.2.111)' can't be established.
ECDSA key fingerprint is SHA256:zAKx3UqfrW3J3ecDEkD63Men1RpLv59ZDJyicvFvlag.
ECDSA key fingerprint is MD5:bd:66:a8:94:98:d5:0b:f3:bc:e9:5c:41:4c:ca:b3:d4.
Are you sure you want to continue connecting (yes/no)? The authenticity of host 'sdw2 (192.168.2.112)' can't be established.
ECDSA key fingerprint is SHA256:zAKx3UqfrW3J3ecDEkD63Men1RpLv59ZDJyicvFvlag.
ECDSA key fingerprint is MD5:bd:66:a8:94:98:d5:0b:f3:bc:e9:5c:41:4c:ca:b3:d4.
Are you sure you want to continue connecting (yes/no)? yes
root@sdw1's password: Please type 'yes' or 'no': 
Please type 'yes' or 'no': 
root@sdw2's password: 
20180527:21:23:30:002348 gpseginstall:mdw:root-[INFO]:-remote command: gzip -f -d /usr/local/GP-4.3.9.0.tar.gz
20180527:21:27:00:002348 gpseginstall:mdw:root-[INFO]:-md5 check on remote location
20180527:21:27:26:002348 gpseginstall:mdw:root-[INFO]:-remote command: cd /usr/local; tar xf GP-4.3.9.0.tar
20180527:21:29:13:002348 gpseginstall:mdw:root-[INFO]:-remote command: rm -f /usr/local/GP-4.3.9.0.tar
20180527:21:29:25:002348 gpseginstall:mdw:root-[INFO]:-remote command: cd /usr/local; rm -f greenplum-db; ln -fs GP-4.3.9.0 greenplum-db
20180527:21:29:27:002348 gpseginstall:mdw:root-[INFO]:-remote command: chown -R gpadmin:gpadmin /usr/local/greenplum-db
20180527:21:29:29:002348 gpseginstall:mdw:root-[INFO]:-remote command: chown -R gpadmin:gpadmin /usr/local/GP-4.3.9.0
20180527:21:29:31:002348 gpseginstall:mdw:root-[INFO]:-rm -f /usr/local/GP-4.3.9.0.tar.gz
20180527:21:29:34:002348 gpseginstall:mdw:root-[INFO]:-version string on master: gpssh version 4.3.9.0 build 1
20180527:21:29:34:002348 gpseginstall:mdw:root-[INFO]:-remote command: . /usr/local/greenplum-db/./greenplum_path.sh; /usr/local/greenplum-db/./bin/gpssh --version
20180527:21:29:39:002348 gpseginstall:mdw:root-[INFO]:-remote command: . /usr/local/GP-4.3.9.0/greenplum_path.sh; /usr/local/GP-4.3.9.0/bin/gpssh --version
20180527:21:29:46:002348 gpseginstall:mdw:root-[INFO]:-SUCCESS -- Requested commands completed
======================================================================
Installation complete
======================================================================

安装结果 /usr/local/greenplum-db

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

2.1.5 Greenplum 初始化配置

(1) 获取环境变量

source /usr/local/greenplum-db/greenplum_path.sh
# 查看环境变量
env

(2) 验证安装

a) 切换到 gpadmin 用户并获取环境变量

su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh

b) 使用 gpssh 工具来测试无密码登录所有主机

gpssh-exkeys -f hostfile
gpssh -f hostfile -e ls -l $GPHOME   # 在 hostfile 主机上批量执行 ls -l $GPHOME

c) 编辑 /home/gpadmin/.bashrc 文件

source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/mirror/gpseg-1
export PGDATABASE=test

(3) 创建存储区域

mkdir -p /data/master
mkdir -p /data/primary
mkdir -p /data/mirror
chown gpadmin:gpadmin /data/master
chown gpadmin:gpadmin /data/primary
chown gpadmin:gpadmin /data/mirror

a) 创建 Master 数据存储区域

mkdir -p /data/master
chown gpadmin:gpadmin /data/master

b) 创建一个包含所有 segment 主机的文件 seg_hosts 文件内容

sdw1
sdw2

c) 使用 gpssh 工具在所有 segment 主机上创建主数据和镜像数据目录

gpssh -f seg_hosts -e 'mkdir -p /data/primary'
gpssh -f seg_hosts -e 'mkdir -p /data/mirror'
gpssh -f seg_hosts -e 'chown gpadmin:gpadmin /data/primary'
gpssh -f seg_hosts -e 'chown gpadmin:gpadmin /data/mirror'

(4) 同步系统时间

a) 在 Master 主机上编辑 /etc/ntp.conf 来设置如下内容:

server 127.127.1.0

b) 在 Segment 主机上编辑 /etc/ntp.conf

server mdw

c) 在 Master 主机上,通过 NTP 守护进程同步系统时钟

gpssh -f hostfile -v -e 'ntpd'

(5) 验证操作系统设置

gpcheck -f hostfile -m mdw

(6) 创建 Greenplun 数据库配置文件

a) 以 gpadmin 用户登录

su - gpadmin

b) 从模板中拷贝一份 gpinitsystem_config 文件

cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/

c) 必须配置的参数

# 数据库的代号
ARRAY_NAME="EMC Greenplum DW"
# segment 的名称前缀
SEG_PREFIX=gpseg
# Primary Segment 起始的端口号
PORT_BASE=40000
# 指定 Primary Segment 的数据目录
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary /data1/primary /data2/primary /data2/primary /data2/primary)
# Master 所在机器的 Hostname
MASTER_HOSTNAME=mdw
# 指定 Master 的数据目录
MASTER_DIRECTORY=/data/master
# Master 的端口
MASTER_PORT=5432
# 指定 Bash 的版本
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
# 字符集 
ENCODING=UNICODE

d) 可选配置的参数,针对镜像的配置

# Mirror Segment 起始的端口号
MIRROR_PORT_BASE=50000
# Mirror Segment 主备同步的起始端口号
REPLICATION_PORT_BASE=41000
# Primary Segment 主备同步的起始端口号
MIRROR_REPLICATION_PORT_BASE=51000
# Mirror Segment 数据目录
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)

(7) 初始化数据库

a) 运行初始化工具

cp /tmp/greenplum/seg_hosts 
gpinitsystem -c gpinitsystem_config -h seg_hosts

# 成功后提示如下
Greenplum Database instance successfully created

b) 设置环境变量

添加“export MASTER_DATA_DIRECTORY=/data/master/gpseg-1"到 ~/bashrc 文件尾,并同步到其他节点。

scp .bashrc sdw1:`pwd`
scp .bashrc sdw2:`pwd`

(8) 启动和停止数据库

a) 启动数据库

gpstart -a

b) 关闭数据库

gpstop

踩过的坑

问题1:执行 gpinitsystem 时报错:-Failed Update port number to 40000

20180528:20:44:58:gpinitsystem:mdw:gpadmin-[FATAL][0]:-Failed Update port number to 40000

解决方案:

主要原因是它是 Greenplum 用 ed 编辑器(很古老的 linux 编辑器)来操作文件的,需要先在所有节点安装才行

yum install -y ed

问题2:执行 gpstart -a 时报错:-Failed to retrieve rolname. Script Exiting!

20180528:20:44:58:gpinitsystem:mdw:gpadmin-[FATAL]:-Failed to retrieve rolname. Script Exiting!

解决方案:

防火墙没关,关闭防火墙后重启 gpstart -a

service firewalld stop
systemctl disable firewalld

问题3:执行 yum 时报错:ImportError: No module named site

[gpadmin@mdw ~]$ yum 
ImportError: No module named site

原因:切换到 gpadmin 的环境后,会修改 PYTHONHOME=/usr/local/greenplum-db/./ext/python 的值,在 root 帐户下执行 yum 即可。

问题4:启动 gpstart -a 时报错:PID file "/data/master/gpseg-1/postmaster.pid" does not exist

pg_hba.conf 配置错误


每天用心记录一点点。内容也许不重要,但习惯很重要!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值