1. 环境
操作系统: CentOS 7.9
cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
GreenPlum: 6.24.6
机器规格:4U8G,磁盘100G
IP | 主机名 | 端口 | 备注 |
---|---|---|---|
192.168.13.141 | mdw1 | 5432 | master host |
192.168.13.142 | mdw2 | 5342 | standby host |
192.168.13.143 | sdw1 | 主: 6000-6001 镜像:7000-7001 | segment host1, 2个主实例,2个镜像实例 |
192.168.13.144 | sdw2 | 主: 6000-6001 镜像:7000-7001 | segment host2, 2个主实例,2个镜像实例 |
2. 安装
2.1 下载安装包
去官网https://network.tanzu.vmware.com/products/vmware-greenplum#/releases/1327978/file_groups/14628 下载
下载后是一个rpm包:greenplum-db-6.24.6-rhel7-x86_64
2.2 安装前准备
2.2.1 主机名设置
按照机器规格中的主机,每个节点修改自己的主机名。
GreenPlum中,习惯将Master机器叫做mdw,Segment机器叫做sdw,dw(Data warehouse).
hostnamectl set-hostname mdw1
hostnamectl set-hostname mdw2
hostnamectl set-hostname sdw1
hostnamectl set-hostname sdw2
2.2.2 修改/etc/hosts
所有节点执行。
cat >> /etc/hosts <<"EOF"
192.168.13.141 mdw1
192.168.13.142 mdw2
192.168.13.143 sdw1
192.168.13.144 sdw2
EOF
2.2.3 创建用户
四个节点上都需要创建用户
groupadd -g 1530 gpadmin
useradd -g 1530 -u 1530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
# 修改gpadmin用户的密码为gpadmin
echo "gpadmin:gpadmin" | chpasswd
2.2.4 创建host文件
所有节点上创建all_hosts文件
su - gpadmin
mkdir -p /home/gpadmin/conf/
cat > /home/gpadmin/conf/all_hosts <<"EOF"
mdw1
mdw2
sdw1
sdw2
EOF
所有节点上创建seg_hosts文件
su - gpadmin
cat > /home/gpadmin/conf/seg_hosts <<"EOF"
sdw1
sdw2
EOF
2.2.5 配置互信
集群ssh免密,做互信的配置,只在master节点 192.168.13.141上操作
# 1.生成秘钥对
ssh-keygen -t rsa
# 2.分发公钥
su - gpadmin
ssh-copy-id gpadmin@mdw1
ssh-copy-id gpadmin@mdw2
ssh-copy-id gpadmin@sdw1
ssh-copy-id gpadmin@sdw2
配置之后,在gpadmin就可以直接ssh {hostname}
连接到目标主机,而不用输入密码。
2.2.6 关闭防火墙
所有节点执行
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
2.2.7 修改内核配置参数(所有节点)
所有节点执行
cat <<EOF > /etc/sysctl.conf
# kernel.shmall = _PHYS_PAGES / 2
kernel.shmall = 742216
# kernel.shmmax = kernel.shmall * PAGE_SIZE
kernel.shmmax = 3040116736
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535
kernel.sem = 500 2048000 200 4096
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0 # See System Memory
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
EOF
重启使配置生效
sysctl -p
2.2.8 配置资源限制参数
/etc/security/limits.conf
系统默认的ulimit -n查出来的句柄数是1024,安装greenplum过程中,发现会报文件句柄数建议设置为65535,否则会安装失败。
* soft nofile 65535
* hard nofile 65535
关闭当前会话,重新登录,配置生效
2.3 安装GreenPlum
2.3.1 安装依赖包
yum install net-tools -y
yum install libcgroup-tools -y
yum install -y apr apr-util bash bzip2 curl krb5 libcurl libevent libxml2 libyaml zlib openldap openssh openssl openssl-libs perl readline rsync R sed tar zip krb5-devel
2.3.2 安装rpm包
安装rpm包
rpm -ivh greenplum-db-6.24.6-rhel7-x86_64.rpm
授权安装路径给gpadmin
chown -R gpadmin:gpadmin /usr/local/greenplum*
2.3.3 目录创建
##创建目录,用作集群数据的存储目录,所有节点操作
mkdir -p /greenplum/data/
chown -R gpadmin:gpadmin /greenplum
-- 所有节点
echo ". /usr/local/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bashrc
-- master配置
echo "export MASTER_DATA_DIRECTORY=/greenplum/data/master/gpseg-1" >> /home/gpadmin/.bashrc
echo "export PGDATABASE=postgres" >> /home/gpadmin/.bashrc
# 使配置文件生效
source /home/gpadmin/.bashrc
2.3.4 使用gpssh-exkeys打通所有服务器
使用gpssh-exkeys将所有机器的通道打开,这样在每台机器之间跳转,就不需要输入密码。否则在下一步做数据库初始化时,会让一直输入密码,使数据库初始化失败。
su - gpadmin
cd /home/gpadmin/conf
source /usr/local/greenplum-db/greenplum_path.sh
gpssh-exkeys -f all_hosts
执行结果:
2.3.5 数据库初始化
在master节点和standby节点上,创建数据目录
su - gpadmin
mkdir -p /greenplum/data/master
在segment节点上创建主实例数据库目录和镜像数据目录
mkdir -p /greenplum/data/primary
mkdir -p /greenplum/data/mirror
在master节点上配置数据库初始化配置文件
su - gpadmin
cat > /home/gpadmin/conf/initgp_config <<"EOF"
#指定primary segment的数据目录,多个目录表示一台机器有多个segment
declare -a DATA_DIRECTORY=(/greenplum/data/primary /greenplum/data/primary)
# mirror的数据目录,和主数据一样,一个对一个,多个对多个
declare -a MIRROR_DATA_DIRECTORY=(/greenplum/data/mirror /greenplum/data/mirror)
#数据库代号
ARRAY_NAME="rptgp"
#segment前缀
SEG_PREFIX=gpseg
#primary segment 起始的端口号
PORT_BASE=6000
MIRROR_PORT_BASE=7000
MASTER_PORT=5432
MASTER_HOSTNAME=mdw1
MASTER_DIRECTORY=/greenplum/data/master
DATABASE_NAME=rptgpdb
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
EOF
执行初始化命令
su - gpadmin
gpinitsystem -c /home/gpadmin/conf/initgp_config -e=gpadmin -s mdw2 -P 5432 -S /greenplum/data/master/gpseg-1 -m 200 -b 256MB
gpinitsystem 参数含义
参数 | 含义 |
---|---|
-c | gpinitsystem_config |
-e | superuser_password |
-s | standby_master_host,可选 |
-P | standby_master_port,可选 |
-S | standby_master_datadir,可选 |
-m | 等同于–max_connections=<number>,设置允许连接到master的最大客户端连接数。 |
-b | 等同于–shared_buffers=,设置1个Greenplum server实例共享内存缓存大小。 |
2.3.6 验证集群
(1) 通过查看端口检查服务是否启动
netstat -tulnp | grep 5432
(2) 通过sql查询
查询从节点
psql postgres -c 'SELECT * FROM pg_stat_replication;'
登录创建的数据库,查看端口
psql -d rptgpdb
# 显示数据库实例端口
show port;
# 显示监听地址
show listen_addresses;
# 查询seg的配置信息
select * from gp_segment_configuration order by 1;
(3) 通过工具查询
查看集群状态
gpstate -s
3. 参考资料
需要注册vmware账号才能下载
- 开源版安装包:https://github.com/greenplum-db/gpdb
- 官方版安装包:https://network.pivotal.io/products/vmware-greenplum#/releases/1163282/file_groups/9837
- 官方版安装包:https://network.tanzu.vmware.com/products/vmware-greenplum#/releases/1327978/file_groups/14628
- greenplum安装教程: https://zhuanlan.zhihu.com/p/642000988
- greenplum安装部署:https://blog.csdn.net/msh6453/article/details/124892605