CentOS7 部署Greenplum6
环境准备
3个节点,每个节点8核、32G内存、1TB硬盘
对应ip和角色划分为:
#主master 192.168.31.101 gp1
#从master,4个主segment 4个从segment 192.168.31.102 gp2
#4个主segment 4个从segment 192.168.31.103 gp3
下载GP6
地址:https://github.com/greenplum-db/gpdb/releases/download/6.19.3/open-source-greenplum-db-6.19.3-rhel7-x86_64.rpm
设置host和防火墙
在每个节点上,设置host,并修改hosts文件,执行:
hostnamectl set-hostname gp1
cat >> /etc/hosts <<EOF 192.168.31.101 gp1 192.168.31.102 gp2 192.168.31.103 gp3 EOF
在每个节点上,设置防火墙,执行:
systemctl start firewalld && systemctl enable firewalld #5432是gp访问端口 firewall-cmd --permanent --zone=public --add-port=5432/tcp #10000-10010是primary端口,当前配置最多支持10个seg(?待测试),跟随PORT_BASE变化 firewall-cmd --permanent --zone=public --add-port=10000-10010/tcp #11000-11010是mirror端口,当前配置最多支持10个seg(?待测试),跟随MIRROR_PORT_BASE变化 firewall-cmd --permanent --zone=public --add-port=11000-11010/tcp #开启3个节点的内网互通 firewall-cmd --permanent --zone=trusted --add-source=192.168.36.57 firewall-cmd --permanent --zone=trusted --add-source=192.168.36.78 firewall-cmd --permanent --zone=trusted --add-source=192.168.36.94 #reload使配置生效 firewall-cmd --reload
新建gpadmin用户并配置免登录
在每个节点上,执行:
groupadd gpadmin && useradd -g gpadmin gpadmin && echo "gpadmin" | passwd --stdin gpadmin
在gp1节点上,执行:
su - gpadmin
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa ssh-copy-id gp1 ssh-copy-id gp2 ssh-copy-id gp3
修改内核配置
在每个节点上,执行:
cat >> /etc/sysctl.conf << EOF # kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages kernel.shmall = 197951838 # kernel.shmmax = kernel.shmall * PAGE_SIZE kernel.shmmax = 810810728448 kernel.shmmni = 4096 vm.overcommit_memory = 2 # See Segment Host Memory vm.overcommit_ratio = 95 # See Segment Host Memory net.ipv4.ip_local_port_range = 10000 65535 # See Port Settings kernel.sem = 250 2048000 200 8192 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.ipv4.ipfrag_high_thresh = 41943040 net.ipv4.ipfrag_low_thresh = 31457280 net.ipv4.ipfrag_time = 60 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
修改kernel.sem
echo "kernel.sem = 50100 128256000 50100 2560" >> /etc/sysctl.conf
修改资源限制
cat >> /etc/security/limits.conf <<EOF * soft nofile 524288 * hard nofile 524288 * soft nproc 131072 * hard nproc 131072 EOF
修改完成后,需重启系统,使配置生效
安装GP6
在所有节点,执行:
yum update -y yum install vim tree nload wget curl net-tools -y yum install open-source-greenplum-db*.rpm -y
GP6初始化
新建 gpinit_config,执行:
cat > /usr/local/greenplum-db/gpinit_config << EOF ARRAY_NAME="Greenplum Data Platform" SEG_PREFIX=gpseg PORT_BASE=10000 # primary端口起始 ### 四个相同的目录表示在一个Segment机器上创建四个Segment实例 ### declare -a DATA_DIRECTORY=(/data/primary /data/primary /data/primary /data/primary) MASTER_HOSTNAME=gp1 MASTER_DIRECTORY=/data/master MASTER_PORT=5432 ### 监听端口 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE MIRROR_PORT_BASE=11000 ### mirror端口起始 declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror /data/mirror /data/mirror) EOF
新建 hostfile_segments,执行:
cat > /usr/local/greenplum-db/hostfile_segments << EOF
gp2
gp3
EOF
修改权限(所有节点),执行:
chown -R gpadmin:gpadmin /usr/local/greenplum-db*
初始化数据目录,在master(即gp1)节点,执行:
mkdir -p /data/master && chown -R gpadmin:gpadmin /data
初始化数据目录,在gp2、gp3节点,执行:
mkdir -p /data/primary && mkdir -p /data/mirror && chown -R gpadmin:gpadmin /data
初始化数据库,在master(即gp1)节点,执行:
su - gpadmin echo 'source /usr/local/greenplum-db/greenplum_path.sh' >> ~/.bashrc echo 'export MASTER_DATA_DIRECTORY=/data/master/gpseg-1' >> ~/.bashrc source /usr/local/greenplum-db/greenplum_path.sh gpinitsystem -c /usr/local/greenplum-db/gpinit_config -h /usr/local/greenplum-db/hostfile_segments
设置数据库密码,在master(即gp1)节点,执行:
su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh && psql -d postgres
然后执行SQL:
alter role gpadmin with password '1234@qweR';
开启远程访问,在master(即gp1)节点,执行:
cat >> /data/master/gpseg-1/pg_hba.conf << EOF host all gpadmin 0.0.0.0/0 md5 local all gpadmin md5 EOF
GP6其他操作
启动
在master(即gp1)节点,执行:
su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh && export MASTER_DATA_DIRECTORY=/data/master/gpseg-1 && gpstart
关闭
在master(即gp1)节点,执行:
su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh && export MASTER_DATA_DIRECTORY=/data/master/gpseg-1 && gpstop
远程访问
连接信息如下:
主机:192.168.31.101 端口:5432 初始数据库:postgres 用户名:gpadmin 密码:1234@qweR
问题解决
使用gpstate等命令,提示 “Error: unable to import module: No module named psutil”
解决方案:安装psutil
#下载get-pip.py,python2 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py #下载get-pip.py,python3 wget https://bootstrap.pypa.io/get-pip.py #安装pip python get-pip.py #安装pstuil pip install psutil
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)