版本信息(安装环境)
- 操作系统: macOS Mojave; Version: 10.14.2
- 虚拟机:
- VirtualBox: V5.2.22
- Vagrant: V2.2.2
创建与启动虚拟机
使用vagrant创建与管理虚拟机
Vagrantfile
1 | Vagrant.configure("2") do |config| |
启动虚拟机
在Vagrantfile文件所在目录下执行1 | $ vagrant up |
查看启动状态
1 | $ vagrant status |

安装所需依赖与修改系统配置
系统配置
依赖安装(master和所有segment节点)
进入虚拟机
1 | $ vagrant gppro1 |
所有虚拟机上在root用户下安装应用
1 | $ su - // 进入root用户 |
- net-tools : 网络管理
- ntp : 网络时间协议,用于同步各个虚拟机的时间
修改ssh密码登录,允许密码登录(master和所有segment节点)
root用户下修改sshd_config文件
1 | $ vi /etc/ssh/sshd_config |
修改安全策略(master和所有segment节点)
- 禁用SELinux
1 | $ sestatus // 查看SELinux状态 |
- 修改后的状态(需要reboot):
1 | $ sestatus |
关闭防火墙
1 |
|
- reboot后查看状态:
1 | $ systemctl status firewalld |
修改内核参数
1 | $ vi /etc/sysctl.conf |
1 | # 指定内核所允许的最大共享内存段的大小 |
重启生效
修改件文件和进程读取数限制
root 用户下
1 | $ vi /etc/security/limits.conf |
1 | # 任意一个用户可以打开的最大的文件数 * 代表所有 |
注: hard 是阀值,超过就会报错 – soft 是警告值
修改文件挂载方式
root 用户下
1 | $ vi /etc/fstab |
1 | /dev/mapper/VolGroup00-LogVol00 / xfs defaults 0 0 |
defaults改为nodev,noatime,nobarrier,inode64
1 | /dev/mapper/VolGroup00-LogVol00 / xfs nodev,noatime,nobarrier,inode64 0 0 |
修改预读数
root 用户下
1 | # 查看 blockdev |
1 | # 临时修改,重启后失效 |
1 | # 将修改命令写入/etc/rc.d/rc.local,否则重启后会失效 |
重启验证
调整I/O scheduler (I/O 调度器)
root 用户下
1 | # 查看当前调度器状态 |
三种调度器简介:
noop: Noop调度器是一个非常特殊的调度器。它不会对特殊请求进行优先处理,它将全部的IO请求都放到一个FIFO队列中。同时,它还会对相似的请求进行合并。deadline: Deadline调度器,会创建两个队列,一个读队列,一个写队列。并且每个IO请求都会有一个与其相关联的过期时间戳。cfq: CFQ的全称是Complete Fairness Queueing。工作原理: 先创建一个IO请求队列,然后将要访问磁盘上相邻数据的请求放到一起,按照这种方式进行排序之后,再依次处理IO请求队列中的请求。
修改调度器为deadline
1 | # 临时生效 |
关闭THP(transparent_hugepage)
root用户下
1 | $ grubby --update-kernel=ALL --args="transparent_hugepage=never" |
删除 IPC
root用户下
1 | $ vi /etc/systemd/logind.conf |
systemd-logind是一个管理用户登录的系统服务。
GreenPlum 相关
所有节点上设置hosts
root用户下
1 | $ vi /etc/hosts |
在master上创建gpadmin用户
root用户下
1 | # 用户组添加pgadmin |
在master上安装greenplums数据库
root用户下
1 | # 运行安装包,安装在默认目录(也可自己定义) |
注:
如果要在gpadmin用户下安装,那么需要先用gpadmin创建好安装目录,最好的选择是安装到gpadmin用户目录下。root用户安装的话,修改文件权限1
2$ chown -R gpadmin /usr/local/greenplum*
$ chgrp -R gpadmin /usr/local/greenplum*
master上创建hostlist和seglist
gpadmin下创建1
2
3
4
5
6$ cd /home/gpadmin
$ mkdir conf
$ cd conf
$ touch hostlist
$ touch seglist
hostlist
1 | gppro1 |
seglist
1 | gppro2 |
设置ssh免密登录(只在master上做)
root用户下
1 | $ gpssh-exkeys -f /home/gpadmin/conf/hostlist |
通过gpseginstall在segment上数据库(在master机器上操作)
root用户下操作
1 | $ gpseginstall -f /home/gpadmin/conf/seglist |
创建数据存储区(在master上操作)
root用户下
1 | # 创建master机器目录 |
创建所有节点目录
1 | $ source /usr/local/greenplum-db/greenplum_path.sh |
注: gpssh -f: 引用哪个文件 -e: 执行什么指令
ntp同步
root用户下
master节点上
1 | $ vi /etc/ntp.conf |
segment节点上
1 | $ vi /etc/ntp.conf |
在master节点上
1 | $ gpssh -f /home/gpadmin/conf/hostlist -v -e 'ntpd' |
验证(master上操作)
1 | $ gpcheck -f /home/gpadmin/conf/hostlist -m mdw |
初始化greenplum(master节点上操作)
gpadmin用户下
1 | $ su - gpadmin |
准备gpinitsystem所需文件 gpinitsystem_config
1 | $ cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/conf/gpinitsystem_config |
运行初始化命令
1 | $ gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config -h /home/gpadmin/conf/seglist |

可以按照提示添加export
1 | $ cd |
允许其他的ip访问greenplum
1 | # 根据提示 |
注:如果找不到gpinitsystem命令: source /usr/local/greenplum-db/greenplum_path.sh