安装greenplum

greenplum开源了。

本文的主要内容是记录安装greenplum测试环境的过程。

测试环境

  1. CentOS 6.5
  2. 1台master,2台segment
192.168.15.135 master  
192.168.15.190 slave1  
192.168.15.198 slave2  

初始化设置

  • 关闭iptables(当然正式环境肯定不能这样操作)
/etc/init.d/iptables stop
chkconfig iptables off  
  • 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  
setenforce 0  
  • ntpd服务
/etc/init.d/ntpd start
chkconfig ntpd on  
  • 修改hosts
# vim /etc/hosts
# 添加内容如下
192.168.15.135 master  
192.168.15.190 slave1  
192.168.15.198 slave2  
  • hostname
# 如果在安装的时候没有设置好hostname,需要修改/etc/sysconfig/network
hostname master  
# slave1和slave2也需要修改
  • 创建gpadmin用户
groupadd gpadmin  
useradd gpadmin -g gpadmin -s /bin/bash  
  • sshd设置:建议都设置为key登录,否则在安装的时候需要输入segment的密码,而多个segment的时候更为蛋疼:
# root用户执行
ssh-keygen  # 直接回车生成私钥  
su - gpadmin  
ssh-keygen  # 生成gpadmin用户的私钥  
exit  
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys  
cat /home/gpadmin/.ssh/id_rsa.pub >> /home/gpadmin/.ssh/authorized_keys  
for sid in 1 2; do scp /root/.ssh/authorized_keys slave${sid}:/root/.ssh/authorized_keys; scp /home/gpadmin/.ssh/authorized_keys slave${sid}:/home/gpadmin/.ssh/authorized_keys; done  
# 另外需要注意authorized_keys文件的所有者和权限(600)
  • /data分区
# 按照官方文档,数据库所在的分区,文件系统要求是xfs
# 如果不是,需要格式化
# mkfs.xfs /dev/sda5
# mount -o rw,noatime,inode64,allocsize=16m /dev/sda5 /data
# 修改/etc/fstab挂载参数
  • 内核参数
# vim /etc/sysctl.conf
kernel.shmmax = 500000000  
kernel.shmmni = 4096  
kernel.shmall = 4000000000  
kernel.sem = 250 512000 100 2048  
kernel.sysrq = 1  
kernel.core_uses_pid = 1  
kernel.msgmnb = 65536  
kernel.msgmax = 65536  
kernel.msgmni = 2048  
net.ipv4.tcp_syncookies = 1  
net.ipv4.ip_forward = 0  
net.ipv4.conf.default.accept_source_route = 0  
net.ipv4.tcp_tw_recycle = 1  
net.ipv4.tcp_max_syn_backlog = 4096  
net.ipv4.conf.all.arp_filter = 1  
net.ipv4.ip_local_port_range = 1025 65535  
net.core.netdev_max_backlog = 10000  
vm.overcommit_memory = 2  
  • 修改/etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
  • 修改/etc/security/limits.d/90-nproc.conf
# 将1024修改为131072:
*          soft    nproc     131072
  • 设置预读块的值为16384
/sbin/blockdev --setra 16384 /dev/sda
  • 修改磁盘访问I/O调度策略
echo deadline > /sys/block/sda/queue/scheduler  
echo deadline > /sys/block/sr0/queue/scheduler  
  • 将上面的一些步骤写入/etc/rc.local开机自启动

  • 最好三台机器都重启下。

下载安装包

下载页面

需要注册才能下载(免费注册)

我下载的版本是greenplum-db-4.3.6.1-build-2-RHEL5-x86_64.zip,解压出来得到一个greenplum-db-4.3.6.1-build-2-RHEL5-x86_64.bin可执行文件

安装

  • 以下操作都是在master下执行

  • 执行安装

./greenplum-db-4.3.6.1-build-2-RHEL5-x86_64.bin
# 这里的安装步骤主要是选择一个安装目录,其他的都输入yes即可
# 我选择的目录是/data/greenplum
  • 设置环境参数
source /data/greenplum/greenplum_path.sh  
  • 创建包含所有主机名的文件all_hosts,内容如下:
master  
slave1  
slave2  
  • segment安装
gpseginstall -f all_hosts -u gpadmin -p gpadmin  

没出什么问题的话就安装成功了

  • 测试安装情况
su - gpadmin  
gpssh -f all_hosts -e ls -l $GPHOME  

这个gpssh可以实现集群管理的功能,原理是通过ssh来执行在master上分发的命令。

  • 配置环境变量
su - gpadmin  
vim /home/gpadmin/.bashrc  
# 添加
source /data/greenplum/greenplum_path.sh  

然后分发到slave1slave2

scp /home/gpadmin/.bashrc slave1:/home/gpadmin/.bashrc  
scp /home/gpadmin/.bashrc slave2:/home/gpadmin/.bashrc  
  • 创建存储区域
mkdir -p /data/master  
chown gpadmin:gpadmin /data/master  
gpssh -f seg_hosts -e 'mkdir -p /data/primary'  
gpssh -f seg_hosts -e 'chown gpadmin:gpadmin /data/primary'  
  • 验证操作系统设置
gpcheck -f all_hosts -m master  

如有ERROR的项,就根据提示处理了,没有问题的话都是INFO

初始化greenplum数据库

  • master上执行,拷贝初始化配置模板:
su - gpadmin  
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config   /home/gpadmin/gpinitsystem_config  
chmod 775 gpinitsystem_config  
  • 修改gpinitsystem_config配置文件
ARRAY_NAME="EMC Greenplum DW"  
SEG_PREFIX=gpseg  
PORT_BASE=40000  
declare -a DATA_DIRECTORY=(/data/primary)  
MASTER_HOSTNAME=mdw  
MASTER_DIRECTORY=/data/master  
MASTER_PORT=5432  
TRUSTED SHELL=ssh  
CHECK_POINT_SEGMENT=8  
ENCODING=UNICODE  

其他项是可选项,我这里没有设置:

MIRROR_PORT_BASE=50000  
REPLICATION_PORT_BASE=41000  
MIRROR_REPLICATION_PORT_BASE=51000  
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror)  
  • 初始化数据库
cp $GPHOME/seg_hosts ~/seg_hosts  
cd ~  
gpinitsystem -c gpinitsystem_config -h seg_hosts  

不出意外,你会遇到这个错误: 解决方法: 由于需要用ed命令修改postgresql.conf,而系统中又没有安装ed命令导致的(话说现在的系统貌似都不用ed这种上古命令)

yum install -y ed  

重新初始化,需要先执行回退命令,如上面截图所说的:

20151104:17:01:07:001305 gpinitsystem:master:gpadmin-[WARN]:-Run command /bin/bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20151104_170009 to remove these changes  

然后重新初始化

gpinitsystem -c gpinitsystem_config -h seg_hosts  

安装成功: 根据上面的输出,还需设置环境变量

# vim /home/gpadmin/.bashrc
# 添加
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1  

然后分发到slave1slave2

  • 测试下安装结果 这时候,greenplum是起来的,看下进程: slave1slave2也存在相应的进程。 现在,可以用gpadmin用户执行gpstopgpstart命令来测试下停止和启动greenplum了:

停止:

启动:

查看数据库: