系统设置(所有节点)
系统参数
共享内存
网络
用户限制
修改或添加/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
-
在执行“gpssh-exkeys -f hostlist”配置免密码登录时出现“[ERROR] ssl-keygen failed:”
解决方案: 执行 unset OPENSSL_CONF ;在执行命令可以避免 - 执行“ 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