greenplum expand

  • 继续在上篇文章的基础上进行扩容计算节点测试,exampledb是我之前创建的用来测试的数据库,里面有两个表cpumem,是一些业务进程所占用CPU和内存的指标值,两个表的记录数如下:
exampledb=# select count(1) from cpu;  
  count
----------
 90253738
(1 row)

exampledb=# select count(1) from mem;  
  count
----------
 91712201
(1 row)
  • 增加一台segment server
192.168.15.72  slave3  
  • 添加到各机器的/etc/hosts

  • 按照上文对slave3进行系统环境初始化

  • 增加gpadmin用户

groupadd gpadmin  
useradd -g gpadmin gpadmin  
passwd gpadmin  
mkdir /home/gpadmin/.ssh  
chown gpadmin:gpadmin /home/gpadmin/.ssh  
chmod 700 /home/gpadmin/.ssh  
  • master上拷贝以下文件到slave3
scp -r /home/gpadmin/.ssh/id_rsa* slave3:/home/gpadmin/.ssh/  
scp -r /home/gpadmin/.ssh/authorized_keys slave3:/home/gpadmin/.ssh/  
  • master上使用命令ssh slave3确认是否可以无密码登录

  • slave3创建greenplum相关文件夹

mkdir /data/greenplum  
chown gpadmin:gpadmin /data/greenplum  
mkdir /data/primary  
chown gpadmin:gpadmin /data/primary  
  • master上拷贝greenplum程序
scp -r /data/greenplum/* slave3:/data/greenplum/  
  • slave1上拷贝/home/gpadmin/.bashrcslave3

  • master上执行gpexpand,该命令会交互式生成一个配置文件:

su - gpadmin  
echo 'slave3' > hosts_expand  
gpexpand -f hosts_expand -D exampledb  

  • 执行上图中箭头所指的命令:
gpexpand -i gpexpand_inputfile_20151110_182836 -D exampledb  

  • 指定周期性执行表的重分布:
gpexpand -d 00:30:00 -D exampledb  

  • gpstat -c检查

  • 至此,已完成增加节点的操作

  • 比较下增加节点前后的执行效率:

select count(1) from mem;  
# 两个segment节点:13260.786 ms
# 三个segment节点:9189.737 ms

select max(value), sid from mem group by 2 order by 1 desc limit 10;  
# 两个segment节点:20763.781 ms
# 三个segment节点:14199.619 ms
  • 结论:增加segment节点能线性增加执行效率。

  • 补充下四个节点的情况,可以看出确实是线性增加执行效率:

select count(1) from mem;  
# 两个segment节点:13260.786 ms
# 三个segment节点:9189.737 ms
# 四个segment节点:7204.541 ms

select max(value), sid from mem group by 2 order by 1 desc limit 10;  
# 两个segment节点:20763.781 ms
# 三个segment节点:14199.619 ms
# 四个segment节点:10438.536 ms