Greenplum对新增节点扩展Segments实战

一、环境信息:

Greenplum版本号:

Greenplum Version: 'postgres (GreenplumDatabase) 4.3.8.2 build 1'

 

GP扩展Segment之前的环境信息:

9个节点,其中:

1个Master节点

1个Standby Master节点

7个Segment节点,每个Segment上面有两个Primary实例,两个Mirror实例

 

二、下面开始介绍在现有Greenplum集群上面新增3个节点来部署Segment。

详细步骤如下

1.      将新增的3个节点的主机名和IP地址加入到原有的Greenplum集群的/etc/hosts文件中,同时拷贝到新增的3个节点中

2.      新增的3个节点的环境配置,包括操作系统参数设置(/etc/sysctl.conf),磁盘IO调度方式,磁盘预读大小等

3.      在新增的3个节点中选择一个节点来安装Greenplum软件,当然你也可以从已经存在的Greenplum集群中拷贝过来

 

举个例子:

这里假定TT-L0023778为新增的其中一台节点的主机名

 

首先在已经存在的Greenplum集群的一个节点执行:

scp -r /usr/local/greenplum-db-4.3.8.2  root@TT-L0023778:/usr/local/

 

然后在TT-L0023778上面创建软链接:

ln -s greenplum-db-4.3.8.2 greenplum-db

 

最后在TT-L0023778节点上面执行如下操作,将自动部署新增的3个节点,包括新增用户,创建信任关系,拷贝软件包操作等(这个操作和当初第一次安装Greenplum集群环境一样):

注:newhosts文件内容为新增的3个节点的主机名

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

gpseginstall -f newhosts -u gpadmin -p xxxxxx

 

这样新增的3个节点就部署好Greenplum软件,创建gpadmin用户,以及建立之间的信任关系了

 

4.      已经存在的Greenplum集群环境和新增3个节点之间交换ssh key,即创建整个新Greenplum集群环境的信任关系

注:existhosts已经存在的主机名列表(每行一个主机名)

    newhosts新增3个节点的主机名列表(每行一个主机名)

gpssh-exkeys -e existhosts -x newhosts

5.      规划新增3个节点的Segment的数据目录,最好保持和原Greenplum集群一致

6.      使用gpcheck检查

gpcheck -f newhosts

7.      使用gpcheckperf检查操作系统的磁盘读写,网络带宽等等

gpcheckperf -f newhosts -d /data1 -d /data2 -r d

 

三、初始化Segment并加入集群

使用gpexpand产生配置文件,当前如果你熟悉格式的话,也可以自己配置

执行如下命令,按照提示一步一步来:

gpexpand -f newhosts

最后会产生一个配置文件,比如:

gpexpand_inputfile_20160718_111125

内容为:

TT-L0088844:TT-L0088844:40000:/data1/primary/gpseg28:59:28:p:41000

TT-L0088845:TT-L0088845:50000:/data2/mirror/gpseg28:75:28:m:51000

TT-L0088844:TT-L0088844:40001:/data1/primary/gpseg29:60:29:p:41001

TT-L0088845:TT-L0088845:50001:/data2/mirror/gpseg29:76:29:m:51001

TT-L0088844:TT-L0088844:40002:/data2/primary/gpseg30:61:30:p:41002

TT-L0088845:TT-L0088845:50002:/data1/mirror/gpseg30:77:30:m:51002

TT-L0088844:TT-L0088844:40003:/data2/primary/gpseg31:62:31:p:41003

TT-L0088845:TT-L0088845:50003:/data1/mirror/gpseg31:78:31:m:51003

TT-L0088845:TT-L0088845:40000:/data1/primary/gpseg32:63:32:p:41000

TT-L0088846:TT-L0088846:50000:/data2/mirror/gpseg32:79:32:m:51000

TT-L0088845:TT-L0088845:40001:/data1/primary/gpseg33:64:33:p:41001

TT-L0088846:TT-L0088846:50001:/data2/mirror/gpseg33:80:33:m:51001

TT-L0088845:TT-L0088845:40002:/data2/primary/gpseg34:65:34:p:41002

TT-L0088846:TT-L0088846:50002:/data1/mirror/gpseg34:81:34:m:51002

TT-L0088845:TT-L0088845:40003:/data2/primary/gpseg35:66:35:p:41003

TT-L0088846:TT-L0088846:50003:/data1/mirror/gpseg35:82:35:m:51003

TT-L0088846:TT-L0088846:40000:/data1/primary/gpseg36:67:36:p:41000

TT-L0088844:TT-L0088844:50000:/data2/mirror/gpseg36:71:36:m:51000

TT-L0088846:TT-L0088846:40001:/data1/primary/gpseg37:68:37:p:41001

TT-L0088844:TT-L0088844:50001:/data2/mirror/gpseg37:72:37:m:51001

TT-L0088846:TT-L0088846:40002:/data2/primary/gpseg38:69:38:p:41002

TT-L0088844:TT-L0088844:50002:/data1/mirror/gpseg38:73:38:m:51002

TT-L0088846:TT-L0088846:40003:/data2/primary/gpseg39:70:39:p:41003

TT-L0088844:TT-L0088844:50003:/data1/mirror/gpseg39:74:39:m:51003

 

下面解释一下每列的含义:

<hostname>:<address>:<port>:<fselocation>:<dbid>:<content>:<preferred_role>:<replication_port>

hostname      主机名

address        IP地址,可以用主机名

port          segment监听端口

fselocation     segment data目录,注意是全路径

dbid          greenplum集群的唯一ID,可以到gp_segment_configuration中获得,必须顺序累加

content        可以到gp_segment_configuration中获得,必须顺序累加

prefered_role   角色(p或m)(primary , mirror)

replication_port 如果没有mirror则不需要(用于replication的端口)。

 

 

下面开始新增3个节点的Segment并加入Master中:

注:zhangyun_db为我的数据库名称

gpexpand -i gpexpand_inputfile_20160718_111125 -D zhangyun_db

 

如果遇到扩展失败了,执行回滚操作:

gpstart -m(或者gpstart -R)

gpexpand -r -D zhangyun_db

gpstart -a

然后定位问题,问题解决后,再重新执行:

gpexpand -i gpexpand_inputfile_20160718_111125 -D zhangyun_db

 

如果扩展Segment成功后,就可以通过查询gp_segment_configuration看到新增的节点。

 

四、重分布表

扩容成功后,执行gpstate -m查看mirror同步情况,当状态为Synchronized时就可以着手进行重分布表了,保持数据分布到新增的Segment节点。

 

我先看一下gpexpand模式下的几张表内容:

zhangyun_db=# select * from gpexpand.status order by updated;

     status       |          updated          

-------------------+----------------------------

 SETUP             | 2016-07-20 16:43:55.33152

 SETUP DONE        | 2016-07-20 16:44:28.592569

 EXPANSION STARTED | 2016-07-20 17:35:55.635294

 EXPANSION STOPPED | 2016-07-20 17:37:48.555813

(4rows)

 

接下来看一下详细的任务情况,如果需要调整任务的先后顺序,你可以修改rank即可:

由于数据量比较多,暂且列出一条数据。

zhangyun_db=# select  dbname,fq_name,distribution_policy_names,rank,status from  gpexpand.status_detail where fq_name='zy_schema.panda_detail';

   dbname    |      fq_name        |distribution_policy_names | rank |  status   

-------------+----------------------+---------------------------+------+-------------

 zhangyun_db | zy_schema.panda_detail| ino , coide             |    2 | NOT STARTED

rank值越小越先执行,如果你不想重分布某张表,可以删除对应表的记录行。

 

修改rank的值:

UPDATE gpexpand.status_detail SET rank=10 WHERE fq_name = 'zy_schema.t_bg_detail';

 

 

查看还有多少表没有重分布:

zhangyun_db=# select * from  gpexpand.expansion_progress ;

name             |    value    

----------------------------------------------+-----------------------------------------

 Bytes Left                   | 997520595344

 Tables Left                   | 80

 Estimated Expansion Rate      |

 Estimated Time to Completion   |

(4 rows)

 

下面我们开始执行数据重分布操作:

gpexpand -a -d 1:00:00 -D zhangyun_db -S -t /tmp -v -n 1

下面解释一个命令的参数含义:

-a表示expansion后执行ANALYZE统计表信息

-d表示expansion需要多久完成

-D表示gpexpand模式所在的数据库

-S表示显示简单的进程视图

-t表示指定Segment节点的临时目录,用来存放tar包文件

-n表示并行度

 

在执行重分布的过程,可以查看gpexpand.expansion_progress表数据,关注一下进度。

 

zhangyun_db=# select * fromgpexpand.expansion_progress ;

             name             |         value        

------------------------------+-----------------------

 Bytes Done                   | 67588854304

 Bytes Left                   | 929931741040

 Estimated Expansion Rate     | 43.7786103160174 MB/s

 Tables Left                  | 78

 Estimated Time to Completion | 05:37:37.655319

 Tables Expanded              | 2

(6 rows)

重分布结束后,执行清理操作:

清除重分布产生的schema gpexpand

gpexpand -c -D zhangyun_db

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值