系统设置(所有节点) 系统参数 共享内存 网络 用户限制 修改或添加/etc/sysctl.conf ,使用sysctl -p 命令即时生效

xfs_mount_options =rw,noatime,inode64,allocsize=16m 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 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.overcommit_memory = 2

配置 /etc/security/limits.conf文件

  • soft nofile 65536

  • hard nofile 65536

  • soft nproc 131072

  • hard nproc 131072

设置磁盘访问 IO调度策略 echo deadline > /sys/block/sda/queue/scheduler echo deadline > /sys/block/fd0/queue/scheduler echo deadline > /sys/block/hdc/queue/scheduler

设置预读块的值为 16384 如果挂载硬盘 XFS文件系统 值为65536

#/sbin/blockdev --getra /dev/sda #/sbin/blockdev --setra 16384 /dev/sda #/sbin/blockdev --setra 16384 /dev/sda1 #/sbin/blockdev --setra 16384 /dev/sda2 #/sbin/blockdev --setra 16384 /dev/sda3

blockdev --getra /dev/sda

blockdev --getra /dev/sda1

blockdev --getra /dev/sda2

修改/etc/hosts,添加如下内容 192.168.10.133 Mdw 192.168.10.132 Sdw

配置了这个文件之后,一定要同时修改 /etc/sysconfig/network这个文件如下(所有机器都要修改):

NETWORKING=yes HOSTNAME=Mdw #其他的机子将 -1 改为 -2 -3 ...

关闭防火墙 如果想开启防火墙,就需要了解Greenplum所有端口信息即可; #systemctl stop firewalld #systemctl disable firewalld

sevice iptables stop #停止 chkconfig iptables off #禁用

关闭SELinux

#setenforce 0 #sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


-------Greenplum依赖包 sudo yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools openldap openldap-devel logrotategcc-c++ python-py curl-devel pam

#sudo yum install apr-devel libevent-devel libyaml-devel #wget https://bootstrap.pypa.io/get-pip.py #sudo python get-pip.py #sudo pip install psi lockfile paramiko setuptools epydoc #sudo pip install --upgrade setuptools ----------------------------------------------------第二种安装依赖包方式 为yum添加国内镜像源 #cd /etc/yum.repos.d #sudo wget -nc http://mirrors.aliyun.com/repo/Centos-6.repo 将阿里镜像源设为默认源 #sudo mv CentOS-Base.repo CentOS-Base.repo.bak #sudo cp Centos-6.repo CentOS-Base.repo 清除yum机制的本地缓存 #sudo yum clean all #sudo yum makecache #sudo yum list #sudo yum -y update

使用yum安装依赖的系统库 #sudo yum install curl-devel bzip2-devel python-devel openssl-devel

使用pip安装以来的Python库 wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py sudo pip install psi lockfile paramiko setuptools epydoc conan


安装并使用gcc6.3作为编译器 自带的gcc4.8.5编译会报语法错误,所以安装更高版本的编译器 #sudo yum install centos-release-scl -y #sudo yum install devtoolset-6-gcc devtoolset-6-gcc-c++ #scl enable devtoolset-6 bash #gcc --version

添加LIB库路径 向/etc/ld.so.conf文件中加入下面的路径 /usr/local/lib /usr/local/lib64 #sudo ldconfig

安装cmake3.8.2 GPORCA需要Cmake3.1以上才能编译

wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz

tar xzvf cmake-3.8.2.tar.gz

cd cmake-3.8.2

./bootstrap

make

sudo make install

下载并安装gp-xerces

cd ~

mkdir orca

cd orca

git clone https://github.com/greenplum-db/gp-xerces.git

cd gp-xerces

./configure

make

sudo make install

下载并安装re2c

进入http://re2c.org/install/install.html下载re2c-1.0.3.tar.gz,拷贝到~/orca

tar -xvzf re2c-1.0.3.tar.gz

cd re2c-1.0.3

./configure

make

sudo make install

下载并安装ninja

cd ~/orca

git clone https://github.com/ninja-build/ninja.git

cd ninja

./configure.py --bootstrap

下载并安装GPORCA

下载https://github.com/greenplum-db/gporca/archive/v2.51.4.tar.gz

cd ~/orca tar -xvzf v2.51.4.tar.gz cd gporca-2.51.4 export PATH=~/orca/ninja:$PATH cmake -GNinja -H. -Bbuild sudo ninja install -C build cd build执行ctest命令进行检查

如果最后输出类似如下结果: 100% tests passed, 0 tests failed out of 119 Total Test time (real) = 165.21 sec 表示成功。注意gpdb5.3.0支持的gporca版本是2.51.XXX,所以不要下载更新版本的GPORCA(例如2.53.XXX)


使用缺省的gporca优化器编译GPDB

编译GPDB源码,安装到 /home/smart/gpdb_gporca.530 目录下 从github上下载GreenPlum最新版5.3.0的源码: https://github.com/greenplum-db/gpdb/archive/5.3.0.tar.gz

$ cd ~/gpdb-5.3.0/ $ ./configure --with-openssl --with-python --enable-debug --enable-depend --with-perl --with-libxml --with-gssapi --prefix=/home/smart/gpdb_gporca.530 $ make $ make install

注意:make的过程中可能会报错缺少bison、flex,用yum添加即可,添加完后需要重新configure再make。 ./configure --with-perl --with-python --with-libxml --with-gssapi --disable-orca --prefix=/usr/local/gpdb make make install


-------------创建gpadmin用户

usradd gpadmin

passwd gpadmin


--------------设置gpadmin用户环境变量 在 /home/gpadmin/.bashrc 和 /home/gpadmin/.bash_profile文件最后添加下面数据

source /usr/local/gpdb/greenplum_path.sh

设置完毕后记得source 下立即生效;

source /home/gpadmin/.bashrc

source /home/gpadmin/.bash_profile


-----------在所有主机上初始化配置Greenplum 获取环境参数

source /usr/local/greenplum-db/greenplum_path.sh

#echo $PATH


------------准备节点服务器信息文件 创建主机文件 all_host和 seg_host 文件内容: Mdw Sdw1 Sdw2


----------------建立节点服务器间的信任 以root用户

gpssh-exkeys -f /home/gpadmin/all_host

按照提示录入 root密码,记住这一步不可以录入gpadmin密码,因为批量安装时需要在/usr/local下创建目录,需要root权限;


--------------批量安装 以root用户

gpseginstall -f /home/gpadmin/all_host -u gpadmin -p gpadmin


--------------检查批量安装情况

su - gpadmin

source /usr/local/gpdb/greenplum_path.sh

#gpssh-exkeys -f /home/all_host 验证 gpadmin 无密码登陆

使用 gpssh 命令确认是否可以在不提示没密码的情况下登陆所有安装了GP软件的主机,使用all_host文件,该文件包含所有主机 使用 gpssh 命令时 各节点 安装目录用户及用户组都用过是 gpadmin账户

gpssh -f /home/gpadmin/all_host -e ls -l $GPHOME

返回结果中各节点目录一直且不需要密码,目录权限都是gpadmin 安装成功


-------------创建目录;在各节点;

#Mdw 用 gpadmin用户

mkdir -p /home/gpadmin/gpdata/gpmaster

#Sdw1 Sdw2

mkdir -p /home/gpadmin/gpdata/gpdatap

mkdir -p /home/gpadmin/gpdata/gpdatam


------------参数检测;还有网络/IO检测;

gpcheck -f /home/gpadmin/all_host -m Mdw -s Sdw


-------------初始化Greenplum

初始配置

使用 gpadmin用户

cp /usr/local/gpdb/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config

chmod 664 gpinitsystem_config

------设置配置文件如下

ARRAY_NAME="Greenplum"

SEG_PREFIX=gpseg

PORT_BASE=40000

declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap)

MASTER_HOSTNAME=Mdw

MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster

Port number for the master instance.

MASTER_PORT=2345

#### Shell utility used to connect to remote hosts.

TRUSTED_SHELL=/usr/bin/ssh

#ENCODING=UTF8

Maximum log file segments between automatic WAL checkpoints.

CHECK_POINT_SEGMENTS=8

ENCODING=UNICODE

MIRROR_PORT_BASE=50000

REPLICATION_PORT_BASE=41000

MIRROR_REPLICATION_PORT_BASE=51000

declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam)

MACHINE_LIST_FILE=/home/gpadmin/seg_host


---------执行初始化命令

gpinitsystem -c /home/gpadmin/gpinitsystem_config -h /home/gpadmin/seg_host


-----------启动数据库

gpstart


------------查看数据启动状态

gpstate -m

  1. 在执行“gpssh-exkeys -f hostlist”配置免密码登录时出现“[ERROR] ssl-keygen failed:” 解决方案: 执行 unset OPENSSL_CONF ;在执行命令可以避免

  2. 执行“ gpseginstall -f /home/gpadmin/config/hostlist -u gpadmin -p li0924”结果失败; 分析:查看日志信息是“tar cf greenplum-db438.tar greenplum-db438”这步出错;很明显是没权限执行;前面有提示 解决方案:用root用户执行;或者直接手动去操作;这步骤就是把该目录复制到各个segment节点;避免在segement再进行安装


---------------检查各节点开启端口

netstat -nplt | grep grep postgres


--------------设置环境变量 你必须在Greenplum数据库主站(和备用主站)上配置环境。您的$ GPHOME目录中提供了一个greenplum_path.sh文件,其中包含了Greenplum数据库的环境变量设置。您可以在gpadmin用户的启动shell配置文件(如.bashrc)中为此文件提供源。

Greenplum数据库管理实用程序还要求设置MASTER_DATA_DIRECTORY环境变量,这应该指向由gpinitsystem程序在主数据目录位置创建的目录。

source /usr/local/gpdb/greenplum_path.sh export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/master/gpseg-1 可选 客户端会话环境变量 export PGPORT=2345 export PGUSER=gpadmin export PGDATABASE=gptest 使其生效并拷贝到 备主机 $ source ~/.bashrc $ scp ~/.bashrc Sdw:~/.bashrc


-------------操作数据库 #访问数据库 $ psql --help

#列出所有数据库 $ psql -l

--可以看到当前有4个数据库,下面演示在本地登录postgres数据库,登录本地数据库可以不指定-h参数,如果端口使用默认的5432,也不需要指定-p参数,默认使用gpadmin管理员用户登录数据库,如果使用gpadmin用户登录,也可以不指定-U参数。 $ psql -d postgres

help