centos6.9 greenplum5.3离线部署文档

给公司运维写的部署文档,初学者也可以看以下,自己尝试在虚拟机上搭一下。

***注:本文的"例如"都不可以直接复制使用,需要结合具体环境自行做出调整***

内存在不考虑其他服务共存的情况下,至少64GB,推荐128GB

网口和网线至少10Gbps,否则数据库性能会有极大的性能影响,推荐七类网线

磁盘格式必须为XFS,否则数据库性能会有极大的性能影响

检查方法:

[root@localhost ~]# df -T
Filesystem    Type    1K-blocks    Used Available    Use%    Mounted on
/dev/sda1    xfs    000    000    0%    /
.....

系统版本必须为centos6.5 ALL以上,推荐centos6.9,原则:所有服务器系统内核版本一致即可

[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-696.13.2.el6.x86_64 ...

一、系统优化调整

*以下操作在所有要部署gp的主机上以root执行

设置hostname,设置IP,生成hosts文件

例如:

[root@localhost ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mdw
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
HWADDR=00:00:00:00:00:00
Type=Ethernet
UUID=1234abcd-56ef-78gh-90ij-1234klmn
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.0.0.2
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
DNS1=10.0.0.1
echo '
#Greenplum
10.0.0.2    mdw gp gp.sinoaudit.cn
10.0.0.3    sdw1
10.0.0.4    sdw2
' >> /etc/hosts

禁用selinux

sed -i 's/^SELINUX.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

关闭防火墙

service iptables stop
chkconfig iptables off

设置时区&时钟同步

\cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtim
sed -i 's/^server/#&/g' /etc/ntp.conf
vi /etc/ntp.conf
在server下方添加
server 10.254.17.253 prefer
server 10.254.96.101
重启ntp
service ntpd restart
chkconfig nptd on
使用date命令检查每个服务器上的时间是否一致
clock -w

修改内核参数

echo '
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.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
' > /etc/sysctl.conf 
sysctl -p

修改用户限制

echo '
gpadmin soft nofile 65536
gpadmin hard nofile 65536
gpadmin soft nproc 131072
gpadmin hard nproc 131072
' >> /etc/security/limits.conf
echo '
gpadmin soft nproc 131072
gpadmin hard nproc 131072
' >> /etc/security/limits.d/90-nproc.conf

如果是xfs文件系统执行下边操作

vi /etc/fstab

修改数据目录所在挂载点文件系统参数选项为 rw,nodev,noatime,nobarrier,inode64

例如:

/dev/sda / xfs nodev,noatime,nobarrier,inode64 0 0

修改预读取块大小

/sbin/blockdev --setra 16384 /dev/sda

修改IO调度

echo deadline > /sys/block/sda/queue/scheduler

配置grub

vi /boot/grub/grub.conf

在数据目录所在挂载点之后追加选项 elevator=deadline transparent_hugepage=never

例如

kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=LABEL=/ elevator=deadline crashkernel=128M@16M quiet console=tty1 console=ttyS1,115200 panic=30 transparent_hugepage=never 
initrd /initrd-2.6.18-274.3.1.el5.img

添加用户

groupadd -g 520 gpadmin
useradd -u 520 -g gpadmin gpadmin
passwd gpadmin # 密码必须统一

添加数据目录

mkdir -p /data/gpdata
chown -R gpadmin:gpadmin /home/gpadmin
chown -R gpadmin:gpadmin /data/gpdata

重启系统

reboot

验证

echo 'mdw
sdw1
sdw2' > hostlist
gpcheck -f hostlist -m mdw

以没有报错为最佳,出现什么错误就调什么

二、安装软件

安装主节点

在master节点所在主机以root执行

上传安装包

unzip greenplum-db-5.3.0-rhel6-x86_64.zip
./greenplum-db-5.3.0-rhel6-x86_64.bin
# q yes enter yes yes

安装其他节点

source /usr/local/greenplum-db/greenplum_path.sh
mkdir /home/gpadmin/gpconfigs
cd /home/gpadmin/gpconfigs
echo 'mdw
sdw1
sdw2' > hostlist
echo 'sdw1
sdw2' > seglist
gpssh-exkeys -f hostlist # 需要输入密码的地方输入密码
gpssh -f hostlist -e date # 验证免密登陆是否成功
gpseginstall -f hostlist -u gpadmin -p gpadmin #这个密码是系统密码

等待完成

修改所有者

以下四条命令在所有主机上以root执行

chown -R gpadmin:gpadmin /home/gpadmin
chown -R gpadmin:gpadmin /data/gpdata
chown -R gpadmin:gpadmin /usr/local/greenplum*
echo '
source /usr/local/greenplum-db/greenplum_path.sh
'>> /home/gpadmin/.bash_profile

三、初始化数据库

在主节点以gpadmin登陆,如su - gpadmin

cd;cd gpconfig
gpssh-exkeys -f hostlist
gpssh -f hostlist -e date
gpssh -f hostlist -e 'mkdir -p /data/gpdata/master'
gpssh -f hostlist -e 'mkdir -p /data/gpdata/primary'
gpssh -f hostlist -e 'mkdir -p /data/gpdata/mirror'

生成初始化配置文件

cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config .
vi gpinitsystem_config

主要有以下几个地方可能需要修改(禁止复制)

declare -a DATA_DIRECTORY=(/data/gpdata/primary /data/gpdata/primary) # 这里一个机器初始化几个primary就写几个
MASTER_HOSTNAME=mdw #改成自己的主节点的主机名hostname
MASTER_DIRECTORY=/data/gpdata/master
如果需要做高可用就解注释MIRROR的选项
MIRROR_PORT_BASE=50000
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
declare -a MIRROR_DATA_DIRECTORY=(/data/gpdata/mirror /data/gpdata/mirror) # 这里要和primary目录个数一致

执行初始化

gpinitsystem -c gpinitsystem_config -h seglist -n zh_CN.utf8 # -n选项设置数据库字符集,默认en_US.utf8,例子是中文,推荐中文,主要是涉及到排序

期间会暂停让你确认,你看以下初始化配置是否正常后输入Y即可

echo '
export MASTER_DATA_DIRECTORY=/data/gp/master/gpseg-1
export PGPORT=5432
' >> ~/.bash_profile
source ~/.bash_profile

查看数据库状态

gpstate -s

简单优化

gpconfig -c max_connections -v 2500 -m 500
gpconfig -c max_prepared_transactions -v 1000
gpconfig -c gp_vmem_protect_limit -v 65536
gpconfig -c max_statement_mem -v 16GB
gpconfig -c statement_mem -v 1GB
echo '
host    all    all    0.0.0.0/0    md5' >> $MASTER_DATA_DIRECTORY/pg_hba.conf
gpstop -a -r

greenplum command center的安装参考http://www.cnblogs.com/chenminklutz/p/9020050.html

附暴力卸载(新手严禁在非虚拟机环境使用)

# 卸载(暴力卸载)
kill -9 `ps -elf | grep gpadmin | grep -v grep | awk '{print $4}'`
rm -f /tmp/.s.PGSQL*
rm -rf /data/gpdata/master/*
rm -rf /data/gpdata/primary/*
rm -rf /data/gpdata/mirror/*
rm -rf /usr/local/greenplum-cc-web/instances/*
rm -rf /data/gp/greenplum-cc-web*
rm -rf /usr/local/greenplum*
rm -rf /root/.ssh/*
rm -rf /home/gpadmin/.ssh/*