Greenplum是Pivotal公司开源的一款大规模并行处理(MPP)数据库,其架构是专门针对大型分析性数据仓库和商业智能工做负载设计。本质上讲,它是多个 PostgreSQL 实例一块儿充当一个数据库管理系统。linux
全部节点进行配置linux的部署环境,本文使用系统是centos6.5。对于节点数的选择,通常来讲,业务量不是很大的状况下,选择3~5个计算节点较为合适,并且,每一个计算节点不在同一台物理机中,同时master和standby不在同一台物理机中。尽可能将每一个节点分散出去,避免由于宿主机宕机致使整个集群不可用。greenplum集群能够同时容许一个计算节点和一个master节点宕机还能正常工做(前提是配置了mirror机制和standby备用master)。shell
修改系统hosts文件,vim /etc/hosts,实际中能够参考以下配置,实际的IP按照申请虚拟机的IP来设置。注意,以前安装时候,OpenStack建立的机器登陆IP和网卡IP不一致,须要配置成网卡IP。主机名要与实际中的一致,此处的master、datan和standby只做为举例使用。
数据库
10.10.10.10 master 10.10.10.11 data1 10.10.10.12 data2 10.10.10.13 data3 10.10.10.14 data4 10.10.10.15 standby
为了简化配置,建议将各个服务器root密码配置成相同的。通常的配置方法以下:vim
ssh-keygen -t rsa #使用root用户运行,四个回车OK ssh-copy-id ip1 #会提示输入密码,ip1是须要ssh免密码登陆的机器IP ssh ip1 #验证是否成功
注意,配置集群的互信是双向的,所以须要在每一台机器上运行上述命令。
若是机器众多的话,也能够用下面脚本的方法来配置。centos
安装expect
yum install expect -ybash
生成秘钥
ssh-keygen服务器
运行下面的脚本cookie
#!/bin/bash SERVERS="master data1 data2 data3 data4 standby" PASSWORD=gpadmin #配置每一台的主机root密码为相同的 auto_ssh_copy_id() { expect -c "set timeout -1; spawn ssh-copy-id $1; expect { *(yes/no)* {send -- yes\r;exp_continue;} *assword:* {send -- $2\r;exp_continue;} eof {exit 0;} }"; } ssh_copy_id_to_all() { for SERVER in $SERVERS do auto_ssh_copy_id $SERVER $PASSWORD done } ssh_copy_id_to_all
注意,该脚本也须要在每一台主机上运行一次。网络
为每一台主机增长gpadmin用户和相关组,并设置用户密码,下面的mypassword根据实际状况进行改变。架构
groupadd -g 530 gpadmin useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin chown -R gpadmin.gpadmin /home/gpadmin echo "mypassword" | passwd --stdin gpadmin
为了不没必要要的安装问题,建议关闭selinux和iptables。
查看当前selinux配置,若是不是disable则须要进行关闭。
[xxxx@xxxx ~]$ sestatus SELinux status: disabled
查看iptables的状态
/etc/init.d/iptables status
若是为打开的,建议直接关闭,并关闭开机启动
service iptables stop chkconfig iptables off
系统内核参数在sysctl.conf中,可使用vim 编辑器打开/etc/sysctl.conf
kernel.shmmax=34359738368 kernel.shmall=8388608 kernel.shmmni = 4096 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.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 = 10000 65535 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.overcommit_memory = 2 vm.overcommit_ratio=95
配置完后使用sysctl -p使配置生效,若是出现了问题,请查看参数是否存在。
可使用以下命令来配置参数
vim /etc/security/limit.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072
注意:对于RedHat6.x系统,还须要将/etc/security/limits.d/90-nproc.conf文件中 的1024修改成131072。
官方建议使用xfs分区,在没有特殊需求的状况下ext三、ext4也是没有问题的。
默认为cfq,更改成deadline,因为数据库安装的盘设备名是sdb,所以只须要将设备名更改成sdb便可。
查看调度器规则
cat /sys/block/sdb/queue/scheduler
更改
echo deadline > /sys/block/sdb/queue/scheduler
查看
cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never
更改成never
echo never > /sys/kernel/mm/transparent_hugepage/defrag
df -T查看有哪些磁盘
将相关的数据盘进行调整:
blockdev --setra 65536 /dev/sda blockdev --setra 65536 /dev/sdb
因为集群的同步依赖于时间,所以集群的各台主机的时间要一致。
ntpdate cn.pool.ntp.org
能够直接从官网下载 https://network.pivotal.io/products/pivotal-gpdb#/releases/1624 ,版本能够根据须要选择,若是没有帐号须要注册一个帐号。
master上进行安装,直接运行二进制文件,二进制的文件是上一步从官网下载的。
./greenplum-db-4.3.8.0-build-1-RHEL5-x86_64.bin
安装的过程是交互,须要用户补充相关的安装信息,大体过程能够按照如下来进行。
******************************************************************************** Do you accept the Pivotal Database license agreement? [yes|no] ******************************************************************************** yes ******************************************************************************** Provide the installation path for Greenplum Database or press ENTER to accept the default installation path: /usr/local/greenplum-db-4.3.8.0 ******************************************************************************** [ENTER] ******************************************************************************** Install Greenplum Database into </usr/local/greenplum-db-4.3.8.0>? [yes|no] ******************************************************************************** yes ******************************************************************************** /usr/local/greenplum-db-4.3.8.0 does not exist. Create /usr/local/greenplum-db-4.3.8.0 ? [yes|no] (Selecting no will exit the installer) ******************************************************************************** yes Extracting product to /usr/local/greenplum-db-4.3.8.0 ******************************************************************************** Installation complete. Greenplum Database is installed in /usr/local/greenplum-db-4.3.8.0 Pivotal Greenplum documentation is available for download at http://docs.gopivotal.com/gpdb ********************************************************************************
将greenplum的安装路径给gpadmin访问权限
chown -R gpadmin.gpadmin /usr/local/ chown -R gpadmin.gpadmin /usr/local/greenplum-db
这里分为两个文件,是一个是集群全部的hosts,一个是计算节点(data)的hosts。这两个文件不存在,须要用户手动建立出来,建立的方法以下:
su - gpadmin mkdir -p /usr/local/greenplum-db/conf
建立集群host_file
注意,host_file 和seg_file里面须要填上主机名,不要填如下名称。
vim /usr/local/greenplum-db/conf/host_file master data1 data2 data3 data4 standby
建立计算节点seg_hosts
vim /usr/local/greenplum-db/conf/seg_hosts data1 data2 data3 data4
这一步在其余节点上安装greenplum
root用户
source /usr/local/greenplum-db/greenplum_path.sh gpseginstall -f /usr/local/greenplum-db/conf/host_file -u gpadmin -p gpadmin
vim /home/gpadmin/.bash_profile
source /usr/local/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/data1/gpdata/gpmaster/gpseg-1 export GPPORT=5432 export PGDATABASE=postgres
这一步建立数据库的数据库文件存放目录,这里的gpdatap1,gpdatap2,gpdatam1,gpdatam2是一个主机上的两个主节点和两个镜像节点的数据库文件目录。这个目录的结构根据实际状况进行调整,可是建议不要在一台主机上安装过多的pg实例,不然数据同步时候,会大量占用系统网络资源,致使节点down掉。
本文挂载的1T数据盘在/data1下。
gpssh -f /usr/local/greenplum-db/conf/host_file -e -v "mkdir -p /data1/gpdata/{gpmaster,gpdatap1,gpdatap2,gpdatam1,gpdatam2}"
配置文件模板在/usr/local/greenplum-db/docs/cli_help/gpconfigs里面,此模板中的mirror segment被注释掉了,在实际使用的时候须要反注释,而后进行配置,建议拷贝一份出来重命名。
cd /usr/local/greenplum-db/docs/cli_help/gpconfigs cp gpinitsystem_config initgp_config
修改initgp_config配置文件。
ARRAY_NAME="EMC Greenplum DW" MACHINE_LIST_FILE=/usr/local/greenplum-db/conf/seg_hosts SEG_PREFIX=gpseg PORT_BASE=40000 declare -a DATA_DIRECTORY=(/data1/gpdata/gpdatap1 /data1/gpdata/gpdatap2) MASTER_HOSTNAME=master MASTER_DIRECTORY=/data1/gpdata/gpmaster MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE MIRROR_PORT_BASE=50000 REPLICATION_PORT_BASE=41000 MIRROR_REPLICATION_PORT_BASE=51000 declare -a MIRROR_DATA_DIRECTORY=(/data1/gpdata/gpdatam1 /data1/gpdata/gpdatam2)
初始化命令 -S 表示使用Spread Mirror 分配 mirror节点,防止一个节点挂掉,另一个节点集中成为瓶颈!-s 表示 standby master
gpinitsystem -c initgp_config -S -s standby
等待初始化成功后,执行gpstate来查看各节点状态。
pg_hba.conf是控制数据库访问的文件
vim $MASTER_DATA_DIRECTORY/pg_hba.conf host all gpadmin 0.0.0.0/0 md5
执行gpstop -u
使配置生效
至此。集群安装成功。
操做 | 命令 |
---|---|
启动 | gpstart -a |
中止 | gpstop -a |
快速中止 | gpstop -M fast |
配置重载,可是只适用于部分参数 | gpstop -u |
查看mirror的状态 | gpstate -e |
查看standby master的状态 | gpstate -f |
查看整个GP群集的状态 | gpstate -s |
查看GP的版本 | gpstate -i |
帮助文档,能够查看gpstat更多用法 | gpstate --help |