暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GreenPlum生产环境SEGMENT节点扩容方案

IT那活儿 2022-08-01
1399

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

Greenplum镜像策略

grouped方式是将每个Host的镜像都放在下一个host上,所有计算节点形成一个环。在扩展segment时,要求新增主机数量为2的倍数。

spread方式是将每个Host的镜像依次分散到后续的Segment主机上。在扩展segment时,要新增主机数大于每个segment上的Primary节点个数。

新增主机硬件资源

类型
建议
操作系统
和原始集群操作系统版本保持一致
CPU
建议和原始集群CPU相同,至少保证性能不低于原始
MEM
建议和原始集群segment上内存大小至少保持一致(频率等)
磁盘
建议对新机器磁盘做压力测试,保证性能不低于原始集群
数据目录名
和原始集群保持一致


集群扩展前置工作

1. 新增主机修改主机名

vi /etc/hostname
2. 配置/etc/hosts
所有主机都需要进行配置,将新增主机加入到原始集群。

3. 配置SSH免密

将新增主机和原始集群中各个segment和master、standby节点配置SSH免密。

4. 安装Greenplum软件包

4.1 安装依赖包

yum -y install rsync coreutils glib2 sysstat e4fsprogs 
xfsprogs ntp readline readline-devel zlib zlib-devel openssl
openssl-devel pam pam-devel libxml2 libxml2-devel libxslt
libxslt-devel python python-devel tcl tcl-devel gcc gcc-c++
make smartmontools flex flex-devel bison bison-devel bison-
runtime perl perl-devel perl-ExtUtils* OpenIPMI-tools
openldap openldap-devel logrotate ldapjdk ldapjdk-devel
libevent libevent-devel libcurl libcurl-devel bzip2 bzip2-
devel bzip2-libs libyml libyml-devel libyaml libyaml-devel
apr-util-devel apr-devel uuid uuid-devel systemd* cur-devel
ed python-psutil python-paramiko python-lockfile libssh2
libss2-devel icu libicu libicu-devel libaio libaio-devel
libtool isomd5sum isomd5sum-devel liblockfile liblockfile-devel psutils

4.2 关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

4.3 创建用户和用户组

groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin

4.4 关闭selinux

vi /etc/selinux/config
修改:SELINUX=disabled

4.5 修改主机内核参数

建议:和原始集群segment上内核参数保持一致。

4.6 修改用户资源限制

cat /etc/security/limit.conf
建议:和原始集群segment上用户资源限制保持一致。

4.7 安装greenplum软件

yum install -y greenplum-4.3.33.rpm

安装完毕后,配置环境变量。

集群扩展segment

1. 生成扩展配置文件

1)生成主机列表
编辑文件,保存新增segment主机名。
内容如下:
2)生成扩展配置文件
Create database test;
gpexpand -f hosts_file -D test

内容如下:

2. 执行扩展配置

Gpssh -f new_host -e “mkdir -p 
/data/{primary1,primary2,primary3,primary4,primary5,
primary6,mirror1,mirror2,mirror3,mirror4,mirror5,mirror6}”
gpexpand -i gpexpand_inputfile_20200105_124630 -D test

[ gpadmin@master ~]$ gpexpand -f gp/new_hosts -D test
Would you like to initiate a new System Expansion Yy|Nn (default=N): 你想开始一个新的系统扩展?
> y
What type of mirroring strategy would you like? 你使用什么类型的镜像策略?
spread|grouped (default=grouped):
> spread
How many new primary segments per host do you want to add? (default=0): 你想添加多少新的节点每台?
> 0
Enter new primary data directory 1: 新加primary节点的地址路径
>
Enter new mirror data directory 1: 新加mirror节点 的地址路 径
>

注意:要保证新增segment主机上的数据存储路径和原始segment主机上路径名相同。
如果出题:
  • 将GP集群,启动到master状态 gpstart -m;
  • 执行gpextend –rollback;
  • 执行 gpstart -a。

3. 检查新增SEGMENT主机信息是否写入系统

执行SQL:
SELECT * FROM  GP_SEGMENT_CONFIGURATION;

4. 执行数据重分布

gpexpand -d 60:00:00 -a -n 8 -D test
注意:监控主机资源。

5. 监控数据冲分布进程

通过内置视图:gp_expand.status、gp_expand.status_detaild、gp_expand. expansion_process,进行监控。

6. 移除扩展模式

在数据重分布完成后,及时将扩展模式移除:gpexpand -c -D test。

7. 查看重分布后集群状态

gpstate -s

方案缺点

  • 在重分布期间,业务无法访问。在执行过程中,确保无活动的作业;
  • 在数据重分布期间,分布进程因资源不足等情况意外宕机,此时集群无法正常提供服务,需要对数据重分布作业进行回滚;
  • 在重分布过程,网络负载较高,及时做好网络隔离,避免影响其他业务;
  • 由于本次集群数据量较大预估接近(85TB),整个作业完成耗时较久;
  • 建议集群扩展节点之前,对数据进行备份,避免意外情况导致数据丢失。

本文作者:魏 强(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论