greenplum开源了。
本文的主要内容是记录安装greenplum
测试环境的过程。
测试环境
- CentOS 6.5
- 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
然后分发到slave1
和slave2
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
然后分发到slave1
和slave2
- 测试下安装结果
这时候,
greenplum
是起来的,看下进程:slave1
和slave2
也存在相应的进程。 现在,可以用gpadmin
用户执行gpstop
和gpstart
命令来测试下停止和启动greenplum
了:
停止:
启动:
查看数据库: