1.Greenplum7.1的编译
Greenplum安装可以使用官方发布的安装包也可以通过源码编译安装
这次我们从最基础的源码编译开始
1、下载Greenplum7.1源码压缩包:
greenplum-7.1.0-src-full.zip
2、解压
Unzip greenplum-7.1.0-src-full.zip
3、
mkdir -p `pwd`/gpsql && ./configure --prefix=`pwd`/gpsql --disable-orca --without-zstd --without-python --disable-gpfdist
由于是TPCC测试一些没有必要的组件比如ORAC就不需要编译了,configure时需要指定后续安装目录,我这里就指定了gpsql目录。
Configure过程中会对greenplum编译依赖的组件进行检查,如果发现编译环境下没有安装就会报错,大家只需要根据检查结果补漏安装就可以。
例如: bzip2-devel libcurl-devel 这些开发包centos默认是不会安装的,大家可以使用内部yum源安装或者直接下载rpm包手工安装。
rpm -ivh bzip2-devel-1.0.6-13.el7.x86_64.rpm
rpm -ivh libcurl-devel-7.29.0-46.el7.x86_64.rpm
4、编译
make -j4 && make install
使用4核并行编译更快,这样就把Greenplum编译完了。
2.搭建单节点greenplum环境:
Greenplum可以支持单节点部署,即在一个节点上部署一个coordinator一个segment,下面说明这种部署方式:
1、环境准备
Greenplum7.1依赖python3而不是python2,而centos7默认安装的是python2,需要手工安装python3。另外为了测试时尽量不影响其他人,python3只自己使用,则创建软连接ln -s /usr/bin/python3 python 并在自己的登陆脚本中增加export PATH=/home/xuchunpeng/depand:$PATH,这样只有自己的环境下python默认就是python3,而其他用户还是系统默认的python2。
另外Greenplum7还需要如下两个安装包:
psutil-5.8.0-cp36-cp36m-manylinux1_x86_64.whl
psycopg2_binary-2.8.3-cp36-cp36m-manylinux1_x86_64.whl
使用pip3 直接安装
2、配置文件修改
安装Greenplum一般使用gpinitsystem_***配置文件,如果是单点Greenplum对应的是gpinitsystem_singlenode,如果是多点集群则对应gpinitsystem_conf
对于单点部署这个配置文件只需要修改如下几个配置项:
//segment数据目录
declare -a DATA_DIRECTORY=(/home/xuchunpeng/gpdata1)
//coordinator节点hostname
COORDINATOR_HOSTNAME=db1
//coordinator目录
COORDINATOR_DIRECTORY=/home/xuchunpeng/gpcoordinator
对应目录需要创建 mkdir -p /home/xuchunpeng/gpdata1 /home/xuchunpeng/gpcoordinator
//coordinator端口
COORDINATOR_PORT=12345
除了上面这个配置文件之外还需要hostfile,单点对应hostfile_singlenode
对于单点这个文件只有一行就是coordinator对应的hostname db1
3、配置环境变量
greenplum_path.sh是Greenplum的环境配置脚本。
在自己的登陆脚本中添加执行
source greenplum_path.sh
另外对应配置信息也需要在登陆脚本中配置
export PGPORT=12345
export COORDINATOR_DATA_DIRECTORY = /home/xuchunpeng/gpcoordinator/gpsne-1
最后执行source 设置环境变量
source .bash_profile
4、配置ssh互信
这个单点其实没有意义,多点部署是需要的
ssh-keygen -t rsa
ssh-copy-id xuchunpeng@db1
5、安装单点集群
./gpinitsystem -c gpinitsystem_singlenode -a
这个相当于其他数据库的initdb,执行后会自动启动coordinator节点以及segment节点。
6、检测安装是否成功
gpstate 查看集群状态
psql –l
createdb test
psql test 登陆数据库执行几条对应sql测试一下
dropdb test
gpstop 停集群
gpstart 启动集群
如果一切正常则标志集群安装成功
3.搭建多点集群环境
环境规划:3节点环境
10.12.2.126 master + 4segment
10.12.2.128 4segment
10.12.2.129 4segment
多节点和单节点安装流程基本相似,下面把我搭建环境的过程列出来,但就不一一解释了。
第一步 打包二进制文件复制到不同节点上并解压
tar cvf gpsql.tar gpsql
scp
tar -xvf gpsql.tar
第二步 每个创建用户
gpadmin:gpadmin:
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
passwd gpadmin
gpadmin111
第三步每个节点环境准备:
GP使用PYTHON3
mkdir -p depand
在/home/gpadmin/depand目录下创建符号连接
ln -s /usr/bin/python3 python
设置环境变量,将这句话放入.bash_profile中
export PATH=/home/gpadmin/depand:$PATH
source .bash_profile
第四步安装python插件
pip3 install psutil-5.8.0-cp36-cp36m-manylinux1_x86_64.whl
pip3 install psycopg2_binary-2.8.3-cp36-cp36m-manylinux1_x86_64.whl
126作为master节点
将编译后的安装包拷贝到126上解压缩:
scp gpsql.tar gpadmin@10.12.2.126:/home/gpadmin
tar -xvf gpsql.tar
第五步设置环境变量
source greenplum_path.sh
配置节点ssh互信
ssh-keygen -t rsa
ssh-copy-id gpadmin@node126-1
ssh-copy-id gpadmin@node128-1
ssh-copy-id gpadmin@node129-1
./gpssh-exkeys -f ../conf/hostfile
gpssh -f ../conf/hostfile
第六步分发安装包到各个节点上解压
gpsync -f hostfile gpsql.tar =:/home/gpadmin
gpssh -f hostfile
cd /home/gpdamin
tar -xvf gpsql.tar
第七步创建数据目录
gpssh -f hostfile
mkdir gpdata
cd gpdata
mkdir gpmaster gpdatap1 gpdatap2 gpdatap3 gpdatap4 gpdatam1 gpdatam2 gpdatam3 gpdatam4
每个节点设置环境变量,放入.bash_profile中
source /home/gpadmin/gpsql/greenplum_path.sh
export COORDINATOR_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=12345
export PGDATABASE=testdb
source .bash_profile
第八步修改配置文件gpinitsystem_config
#### Naming convention for utility-generated data directories.
SEG_PREFIX=gpseg
#### Base number by which primary segment port numbers
#### are calculated.
PORT_BASE=33000
#### File system location(s) where primary segment data directories
#### will be created. The number of locations in the list dictate
#### the number of primary segments that will get created per
#### physical host (if multiple addresses for a host are listed in
#### the hostfile, the number of segments will be spread evenly across
#### the specified interface addresses).
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2 /home/gpadmin/gpdata/gpdatap3 /home/gpadmin/gpdata/gpdatap4 /home/gpadmin/gpdata/gpdatap5 /home/gpadmin/gpdata/gpdatap6 /home/gpadmin/gpdata/gpdatap7 /home/gpadmin/gpdata/gpdatap8)
#### OS-configured hostname or IP address of the coordinator host.
COORDINATOR_HOSTNAME=node126-1
#### File system location where the coordinator data directory
#### will be created.
COORDINATOR_DIRECTORY=/home/gpadmin/gpdata/gpmaster
#### Port number for the coordinator instance.
COORDINATOR_PORT=12345
#### Shell utility used to connect to remote hosts.
TRUSTED_SHELL=ssh
#### Default server-side character set encoding.
ENCODING=UNICODE
第九步 initdb
gpinitsystem -c /home/gpadmin/gpsql/conf/gpinitsystem_config -h /home/gpadmin/gpsql/conf/hostfile -a
ps -aux | grep gpadmin | grep postgres
第十步检测
检测状态
gpstate
psql -l
createdb testdb
psql testdb
dropdb testdb
关闭gp gpstop
启动gp gpstart