安装
1 安装环境及版本
主机系统 CentOs7.5
Greenplum版本 4.3.99
主机ip
10.77.100.121
10.77.100.122
10.77.100.123
其中10.77.100.121为master,其余为segment
2 安装准备工作
2.1 修改hosts(所有机器)
vim /etc/hosts #添加如下内容
10.77.100.121 dw-greenplum-1 mdw
10.77.100.122 dw-greenplum-2 sdw1
10.77.100.123 dw-greenplum-3 sdw2
vim /etc/sysconfig/network #修改如下
NETWORKING=yes
HOSTNAME=dw-greenplum-1 #其他的机子将 -1 改为 -2 -3 ...
注意: 修改了/etc/sysconfig/network文件之后,需要将/home/gpadmin/.gphostcache删除掉,因为如果在修改network文件之前执行过gpssh-exkeys,可能会在gphostcache文件中生成主机名和hostlist配置中的名字形成对应关系,而greenplum之后不会再修改这个文件。
2.2 修改系统内核配置(所有机器)
vim /etc/sysctl.conf #添加如下内容
kernel.shmall = 4294967296
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/sysctl.conf配置生效
sysctl -p
修改文件打开限制
vim /etc/security/limits.conf #添加如下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
关闭SELINUX安全设置
vim /etc/selinux/config #修改如下
SELINUX=disabled
2.3 关闭防火墙(所有机器)
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2.4 创建用户和用户组(所有机器)
groupadd -g 530 gpadmin
useradd -g 530 -u530 -m -d /home/gpadmin -s /bin/bash gpadmin
若要修改密码 #passwd gpadmin
3 安装与分发
3.1 联网安装必要的包 (所有机器)
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 logrotate gcc-c++ python-py net-tools
yum -y install bzip2-devel libevent-devel apr-devel curl-devel ed python-paramiko python-devel
yum -y install wget
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install lockfile paramiko setuptools epydoc psutil
pip install psi
pip install --upgrade setuptools
3.2 将源码zip包放置在/home/gpadmin,并修改所有者
chown gpadmin.gpadmin /home/gpadmin/gpdb.zip #源码包
3.3 切换用户
su - gpadmin
3.4 解压代码
unzip gpdb.zip #源码包
3.5 创建目录
mkdir /home/gpadmin/gpdb
3.6 进入源码目录,编译安装
cd gpdb-master #刚解压的源码目录
./configure --prefix=/home/gpadmin/gpdb #debug选项 --enable-debug --enable-testutils --enable-debugbreak
#debug选项 修改 src/Makefile.global里的CFLAGS和CXXFLAGS 选项-O3 为 -O0
make #注意,如果缺少某些库和工具之类的,则需要在所有的节点上安装
make install
3.7 分发
因为只在 master 上安装了Greenplum,所以下面要将安装包批量发送到每个 slave 机器上,才能算是整个Greenplum 集群完整安装了Greenplum。当然你也可以在所有机器上重复configure和make。
3.7.1 在master主节点上创建安装GP的tar文件,其中gpdb是安装路径
gtar -cvf /home/gpadmin/gp.tar gpdb
3.7.2 创建conf目录
mkdir ~/conf
3.7.3 创建hostlist和seg_hosts
vim conf/hostlist #添加如下
mdw
sdw1
sdw2
vim conf/seg_hosts #添加如下
sdw1
sdw2
3.7.4 交换秘钥
source /home/gpadmin/gpdb/greenplum_path.sh #是Greenplum环境生效
gpssh-exkeys -f /home/gpadmin/conf/hostlist
3.7.5 发送gp.tar至其他node
gpscp -f /home/gpadmin/conf/seg_hosts /home/gpadmin/gp.tar =:/home/gpadmin
3.7.6 连接各个节点,解压gp.tar,创建数据库数据保存目录
gpssh -f /home/gpadmin/conf/hostlist #连接所有节点
cd /home/gpadmin
gtar -xvf gp.tar
mkdir gpdata
cd gpdata
mkdir gpdatap1 gpdatam1 gpmaster
exit
4 初始化和创建数据库
4.1 配置环境变量(所有机器)
vim ~/.bashrc #也可以是其他配置文件,添加如下
# greenplum env
source /home/gpadmin/gpdb/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1/
若还要配置其他参数参见postgresql
source ~/.bashrc #使配置文件生效
4.2 编辑gp配置文件
cp ~/gpdb/docs/cli_help/gpconfigs/gpinitsystem_config ~/conf
vim ~/conf/gpinitsystem_config #配置如下
ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1)
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
##### 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/gpdatam1)
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
#注意,若要在mdw上实例化segment,则MACHINE_LIST_FILE=/home/gpadmin/conf/hostlist
4.3 初始化
gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config –a
#gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config -s sdw1 -a #配置standby命令
4.4 启动/关闭数据库
gpstart/gpstop
4.5 进入数据库
psql -d postgres -p 2345
进入segment
PGOPTIONS='-c gp_session_role=utility' psql -d postgres -p 40000
补充
安装gpadmin-5.7的时候发现还有些依赖项需要安装
-
安装或升级cmake
- 下载
https://cmake.org/download/ - 编译安装
yum -y remove cmake // 删除原有版本 ./bootstrap && make && make install ln -s /usr/local/bin/cmake /usr/bin/ // 建立软连接
- 下载
-
安装gp-xerces
./configure make && make install
-
安装re2c
进入re2c目录 ./autogen.sh ./configure make && make install
-
安装ninja
./configure.py --bootstrap 将生成的ninja拷贝至/usr/bin
-
安装gporca
- 下载(5.7对应的版本是2.55.XX)
https://github.com/greenplum-db/gporca/releases - 编译安装
// debug cmake -GNinja -D CMAKE_BUILD_TYPE=DEBUG -H. -Bbuild.debug ninja install -C build.debug // 非debug cmake -GNinja -H. -Bbuild ninja install -C build
- 下载(5.7对应的版本是2.55.XX)
ERROR
- error1
git: command not found
- solution1
yum -y install git
- error2
autoreconf: command not found
- solution2
yum -y install autoconf
- error3
Can't exec "aclocal": No such file or directory
- solution3
yum -y install automake // aclocal是automake包的一部分
- error4
./configure时报如下错误
checking Checking ORCA version... configure: error: Your ORCA version is expected to be 2.55.XXX
- solution4
1 确认安装版本号
2 版本号正确情况下
vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib
source ~/.bashrc
// 原因在于,gporca默认安装在了/usr/local/lib下,而安装者又没有引入这个库,导致./configure时报错
- error5: gpssh-exkeys -f /home/gpadmin/conf/hostlist
[ERROR] unable to copy authentication files to sdw2
lost connection
- solution5
删除 .ssh目录
重新执行 gpssh-exkeys -f /home/gpadmin/conf/hostlist
参考链接
Greenplum 源码安装教程 —— 以 CentOS 平台为例
CentOS 7下Greenplum 源码安装教程
CMake Error: CMake was unable to find a build program corresponding to "Ninja".
Linux有问必答:如何修复“运行aclocal失败:没有该文件或目录”