Greenplum 部署简介

1. 分布式部署

此节主要介绍 Greenplum 数据库的几种部署方式,和常见问题。

1.1 基础部署
1.1.1 初始化操作系统(所有节点都需要做此项工作)
  • 创建用户和组 gpadmin
[root@xxx]# groupadd -g 3030 gpadmin
[root@xxx]# useradd -u 3030 gpadmin -g gpadmin -d /home/gpadmin
[root@xxx]# passwd gpadmin

  • 配置内核参数,添加如下内容
[root@xxx]# nano /etc/sysctl.conf 
#By greenplum
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.sem = 250 64000 100 512
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 64000 100 512
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_max_syn_backlog=4096
net.core.netdev_max_backlog=10000
vm.overcommit_memory=2
net.ipv4.conf.all.arp_filter = 1

  • 手工执行命令,让参数生效
[root@xxx]# sysctl -p

  • 在limits.conf文件中添加如下配置
[root@xxx]# nano /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

  • 调整IO调度算法 修改内核参数,添加如下配置,调整IO调度算法:(重启系统才能生效)
[root@xxx]# nano /boot/grub/menu.lst
elevator=deadline

  • 设置磁盘预读,优化磁盘IO效率(重启系统才能生效)
[root@xxx]# nano /etc/rc.d/rc.local
blockdev --setra 16384 /dev/sd*

  • 安装其他必备系统软件

此处以 CentOS 7.2 (1511) 为例。

  • 解压缩 greenplum 安装包使用
yum -y install unzip

  • 监控系统负载使用(mpstat,iostat等)
yum -y install sysstat

  • Greenplum 扩展节点时需要使用到 Perl
yum -y install perl

  • 防火墙设置

用户可以详细配置系统防火墙允许的端口,由于 Greenplum 使用到的端口较多,这里选择关闭。

systemctl stop firewalld
systemctl disable firewalld

  • 重启系统
[root@xxx]# reboot

1.1.2 检查操作系统参数

重新启动后,应该逐一对各项参数进行检查。

  • 验证内核参数配置是否生效
[root@xxx]# cat /sys/block/*/queue/scheduler
noop anticipatory deadline [cfq] 
noop anticipatory deadline [cfq] 
输出的行应该含有[deadline]

  • 验证磁盘预读预读配置
修改前:
[root@xxx]# blockdev --getra /dev/sd*
256
256
256
256
256
修改后:
[root@xxx]# blockdev --getra /dev/sd*
16384
16384
16384
16384
16384

1.1.3 开始安装 Greenplum 数据库

此处假设有 3 个节点,即: mdw,sdw01,sdw02。

需要在所有节点进行配置:

  • 修改 hosts 文件配置如下
su root
nano /etc/hosts
10.20.17.178 mdw
10.20.17.179 sdw1
10.20.17.180 sdw2

  • 添加 gpadmin 用户
groupadd -g 3030 gpadmin
useradd -u 3030 gpadmin -g gpadmin -d /home/gpadmin
passwd gpadmin

  • 在 mdw (主节点)上安装 greenplum greenplum-db-4.3.11.3-rhel5-x86_64.zip 安装压缩包 已经预先放置在所有节点的 /home/gpadmin/gpdb_install_package 下
cd /home/gpadmin/gpdb_install_package
su gpadmin
unzip greenplum-db-4.3.11.3-rhel5-x86_64.zip
su root
./greenplum-db-4.3.11.3-rhel5-x86_64.bin

  • 赋权
chown -R gpadmin:gpadmin /usr/local/green*

  • 添加 all_hosts 和 seg_hosts 文件
su gpadmin
cd ~
nano all_hosts
mdw
sdw1
sdw2
nano seg_hosts
sdw1
sdw2

  • 建立文件夹并赋权
su root
mkdir -p /tol/master
mkdir -p /tol/data/gp1
mkdir -p /tol/data/gp2
mkdir -p /tol/data/gp3
mkdir -p /tol/data/gp4
chown -R gpadmin:gpadmin /tol/master
chown -R gpadmin:gpadmin /tol/data/gp*

  • 修改 .bash_profile 文件 注意所有节点都需要建立此文件并执行后才能执行 gpinitsystem -c gpinitsystem_config 这是非常重要的步骤!
su gpadmin
cd ~
nano .bash_profile
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/tol/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpdb1

source .bash_profile

  • 建立节点信任
gpssh-exkeys -f all_hosts

  • 打包主节点上的安装文件
su root
cd /usr/local/
tar -cvf gpdb4.3.tar greenplum-db-4.3.11.3

  • 将包传至 各个节点的 usr/local/
scp gpdb4.3.tar root@sdw1:/usr/local/
scp gpdb4.3.tar root@sdw2:/usr/local/

  • 在 段节点(从节点) 进行操作

  • 解压安装包

su root
cd /usr/local/
tar -vxf gpdb4.3.tar
ln -s greenplum-db-4.3.11.3 greenplum-db
chown -R gpadmin:gpadmin /usr/local/green*

  • 添加需要的文件夹
su root
mkdir -p /tol/master
mkdir -p /tol/data/gp1
mkdir -p /tol/data/gp2
mkdir -p /tol/data/gp3
mkdir -p /tol/data/gp4
chown -R gpadmin:gpadmin /tol/master
chown -R gpadmin:gpadmin /tol/data/gp*

  • 回到 主节点 配置初始化文件
su gpadmin
cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config .

  • 修改 gpinitsystem_config 文件
nano gpinitsystem_config
declare -a DATA_DIRECTORY=(/tol/data/gp1 /tol/data/gp2 /tol/data/gp3 /tol/data/gp4)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/tol/master
DATABASE_NAME=gpdb1
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts

  • 初始化数据库(-a为不提示安装)
gpinitsystem -c gpinitsystem_config -a

1.1.4 安装完毕后数据库初始设置
  • 安装结束后可以连接GP数据库了:
[gpadmin@xxx]$ psql -d gpdb1
psql (8.2.15)
Type "help" for help.
goolen=# \q

  • 初始设置, 设置密码
psql -h mdw -p 5432 -d gpdb1 -U gpadmin
alter role gpadmin with password 'gpadmin';

  • 修改远程访问(检查你的IP段进行设置)
nano $MASTER_DATA_DIRECTORY/pg_hba.conf
增加
host all all 10.20.17.0/24 md5

  • 重新加载配置
gpstop -u

  • 查询数据分布,users_info 是 自己创建的表, 数据会均匀分布在 sdw1 和 sdw2 节点 的 上 /tol/data/gp1 ~ /tol/data/gp4 上,共 8 个段
select gp_segment_id, count(*) from users_info group by gp_segment_id;

gpdb1=# select gp_segment_id, count(*) from users_info group by gp_segment_id;
 gp_segment_id | count 
---------------+-------
             7 |   133
             3 |   130
             4 |   130
             0 |   113
             1 |   118
             2 |   115
             6 |   142
             5 |   121

1.2 无镜像模式部署

假设你拥有 3 个节点,分别为 mdw,sdw01,sdw02。在这种情况下,对 sdw 中的 segment 的数量Greenplum 没有限制,但是 Linux 内核信号量限制在 40 个左右(建议不要超过 32 个)。初始化时需要将 gpinitsystem_config 中所有与镜像模式相关的选项全部注释。初始化命令如下:

gpinitsystem -c gpinitsystem_config -a

典型的就是上述的这种基础部署这种模式。

1.3 添加新节点
  • 首先需要对新节点进行系统初始化 参考基础部署中的初始化系统。并将安装包拷贝至新节点指定位置 /usr/local ,解压,并建立快捷方式。

  • 在 mdw节点 上添加节点 略

1.4 镜像模式部署

假设你拥有 3 个节点,分别为 mdw,sdw01,sdw02。sdw01 做 standby,Greenplum 对 sdw 中的 segment 限制为 1 个(只能为1),内部机制为交叉备份。修改配置文件gpinitsystem_config为:

ARRAY_NAME="EMC Greenplum DW"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/tol/data/gp1)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/tol/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE

# 镜像相关配置
#MIRROR_PORT_BASE=50000
#REPLICATION_PORT_BASE=41000
#MIRROR_REPLICATION_PORT_BASE=51000
#declare -a MIRROR_DATA_DIRECTORY=(/tol/data/mi1)

DATABASE_NAME=gpdb1
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts

初始化命令:

# 默认使用 sdw01 为 standby 节点
gpinitsystem -c gpinitsystem_config -a -s sdw01 -S

那么,假设你拥有 5 个节点,分别为 mdw,sdw01,sdw02,sdw03,sdw04,那么每个 segment 节点最多可以有 2 个 segment(当然 1 个 segment 也可以)。共计 8 个 segment 。

在镜像模式下,节点(mdw节点不计在内)与段的关系为: 每个节点上的(最佳)大段数为总节点数的 1/2 ,即:

节点数每个节点的最大段数总计最大有效段数
212
428
8432
168128
3216512

如果不按照上述建议,在镜像模式下,可以采用最大 段节点数 的倍数来调试。

例如:

现有 6个段节点,那么段实例的个数可以使用 6,12,18,24,30...这种方式来扩展,但是段实例过多会导致初始化时,段实例启动失败。

由于段数受到此规则(交叉备份)限制,这一点必须要注意。

注意:

经过实际测试,在6个段节点规模,使用 gpinitsystem 初始化镜像模式最大为6个段实例,超过6后,一直无法通过初始化。

但是,可以采用先使用无镜像模式初始化,在初始化完成后,通过 gpaddmirrors 工具添加镜像节点使得一个节点的最大段实例提高至18个(共6个节点,段实例加镜像段实例总计216个段),这一方法可以借鉴。

在完成镜像节点的添加后,再通过 gpinitstandby 来添加 standby 节点。

转载于:https://my.oschina.net/crooner/blog/914976

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值