1.下载安装包(rpm、deb或源码)
打开greenplum官网https://github.com/greenplum-db/gpdb/releases,下载安装包
或Greenplum Database : Greenplum Database ,可找到gp5、gp6的源码包等安装包。
2.安装依赖包和配置环境变量
配置网络源(根据系统版本及型号匹配阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区https://developer.aliyun.com/mirror/)
wget –O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum makecache
yum install -y epel-release
#配置epel源
yum install -y apr-devel bison bzip2-devel cmake3 flex gcc gcc-c++ krb5-devel libcurl-devel libevent-devel libkadm5 libzstd-devel openssl-devel perl-ExtUtils-Embed readline-devel zlib-devel libnsl perl libxml2-devel
#安装依赖包
xerces-c-devel 和libyaml-devel
#这两个依赖包源里没有,我这里处理方式是到Packages for Linux and Unix - pkgs.org找到对应的安装包上传安装(xerces-c-devel和xerces-c两个安装包)
vim /etc/sysctl.conf
#优化TCP、内核(这里需要注意的是根据自己实际情况来优化,如果不是生产环境,而是虚拟机可按下面配置或者不进行优化,我这里只优化了网络,没有优化内核)
kernel.shmmax = 500000000
#配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好。 (以字节为单位byte-k-m-g) ,物理内存的1/2}
kernel.shmmni = 4096
#最小的内存segment的大小
kernel.shmall = 2000000000
#全部允许使用的共享内存大小
kernel.sem = 250 512000 100 2048
#表示设置的信号量。包含四个值:semmsl、semmns、semopm、semmni
#semmsl:每个信号灯集合中最多的信号灯数目。最小250;对于processes参数设置较大的系统建议设置为processes+10。
#semmns:信号灯的最大数量,跟ORACLE的PROCESS数有关。SEMMSL * SEMMNI
#semopm:系统调用允许的信号量最大个数。至少100;或者等于SEMMSL
#semmni:系统信号量set最大个数。最少128
kernel.sysrq = 1
#使用组合键【Alt+PrintScreen+[CommandKey]】查看系统情况。除非是要调试,解决问题,一般情况下,不要打开此功能。如果一定要打开,请确保您的终端访问的安全性
kernel.core_uses_pid = 1
#控制core文件的文件名是否添加pid作为扩展
kernel.msgmnb = 65536
#该文件指定一个消息队列的最大长度(bytes),缺省设置:16384
kernel.msgmax = 65536
#该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes)。缺省设置:8192
kernel.msgmni = 2048
#该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。缺省设置:16
net.ipv4.tcp_syncookies = 1
#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
net.ipv4.ip_forward = 0
#开启包过滤功能
net.ipv4.conf.default.accept_source_route = 0
#禁用所有ip源路由
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_max_syn_backlog = 4096
#指定所能接受SYN同步包的最大客户端数量。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
net.ipv4.conf.all.arp_filter = 1
#启用源路由核查功能
net.ipv4.ip_local_port_range = 1025 65535
#表示用于向外连接的本地端口范围
net.core.netdev_max_backlog = 10000
#表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包最大数。该参数对应系统路径为/proc/sys/net/core/netdev_max_backlog,默认值为1000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
# 0,:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
#1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
#2: 表示内核允许分配超过所有物理内存和交换空间总和的内存。
vm.max_map_count = 262144
vim /etc/security/limits.conf
#编辑用户资源限制文件
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
3.创建用户、组等其他操作
groupadd gpadmin
#创建gpadmin用户组
useradd –m –d /home/gpadmin –s /bin/bash –g gpadmin gpadmin
#创建用户指定家目录、运行的shell、用户组
echo “gpadmin ALL=(ALL) NOPASSWD:ALL” >>/etc/sudoers
#将gpadmin用户赋予sudo权限
4.安装gp数据库等操作
切换gpadmin用户,上传gp安装包
sudo rpm -ivh open-source-greenplum-db-6.20.0-rhel7-x86_64.rpm
sudo find / -name greenplum -type d
sudo chown -R gpadmin:gpadmin /usr/local/greenplum-db/
#将安装好的文件所有组所有组划分给gpadmin用户
cd /usr/local/greenplum-db/
source greenplum_path.sh
#应用环境变量
mkdir master data
#这两个文件夹是用来初始化数据库存放的文件的,所以最好找一个数据盘创建文件夹,我这里空间大默认放到其目录下
echo "gp_test" >> hostlist_singlenode //gp_test指hostname
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_singlenode .
vim gpinitsystem_singlenode
MACHINE_LIST_FILE=./hostlist_singlenode
MASTER_HOSTNAME=gp_test
#gp_test指hostname
MASTER_DIRECTORY=/usr/local/greenplum/master
declare -a DATA_DIRECTORY=(/usr/local/greenplum/data )
#这里的master和data路径不固定,根据自己创建的文件夹的位置填写
./bin/gpinitsystem -c gpinitsystem_singlenode
#初始化数据库,初始化完成默认启动数据库然后修改默认密码等其他操作
初始化gp数据库系统
gpinitsystem –a
#不提示用户进行确认
gpinitsystem -c gpinitsystem_config (必选项)
#gp配置文件的完整路径和文件名称,其中包括所有已经定义的参数,用于配置和初始化新的Greenplum数据库系统
gpinitsystem -h hostfile_gpinitsyste
#包含Segment主机地址的文件的完整路径和文件名。如果未在命令行中指定,则可以使用gpinitsystem_config文件中的MACHINE_LIST_FILE参数指定主机文件
启动数据库:
./bin/gpstart –a
#快速启动gp
./bin/gpstart -d $MASTER_DATA_DIRECTORY
#启动gp并指定数据目录(目录默认是在master)
停止数据库:
gpstop -a
# 快速停止
gpstop -d
# 指定数据目录(默认值:$MASTER_DATA_DIRECTORY)
gpstop -r
# 停止所有实例,然后重启系统