- 继续在上篇文章的基础上进行扩容计算节点测试,
exampledb
是我之前创建的用来测试的数据库,里面有两个表cpu
和mem
,是一些业务进程所占用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/.bashrc
到slave3
在
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