1. Greenplum简介Greenplum是Pivotal公司基于PostgreSQL开发的一个面向数据仓库的关系型数据库,是开源的。有三个关键词可以描述:
1. Shared Nothing
各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,各处理单元之间通过协议通信,并行处理和扩展能力更好。各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。Share-Nothing架构在扩展性和成本上都具有明显优势。
2. MPP(Massively Parallel Processor大规模并行处理)
Greenplum可以将TB级的数据仓库负载分解,并使用所有的系统资源并行处理单个查询
3. MVCC(多版本控制)
MVCC以避免给数据库事务显式锁定的方式,-大化减少锁争用以确保多用户环境下的性能。在并发控制方面,使用MVCC而不是使用锁机制的-大优势是, MVCC对查询(读)的锁与写的锁不存在冲突,并且读与写之间从不互相阻塞。
2. GP架构
1. 主节点Master host的主要功能
访问系统的入口
数据库侦听进程 (postgres 默认5432端口)
处理所有用户连接
建立查询计划
协调工作处理过程
管理工具
系统目录表和元数据(数据字典)
不存放任何用户数据
2. 数据节点Segment host的主要功能
每段(Segment)存放
一部分用户数据一个系统可以有多段
用户不能直接存取访问
所有对段的访问都经过Master
数据库监听进程(postgres)监听来自Master的连接(primary:40000, mirror:50000)
Segment分primary和mirror两种,一般交错的存放在子节点上
当Primary Segment失败时,Mirror Segment将自动提供服务
Primary Segment恢复正常后,使用gprecoverseg –F 同步数据。
3. standby
为实现HA,可以为master节点创建standby节点,用于当 Master 节点损坏时提供 Master 服务,Standby 实时与 Master 节点的 Catalog 和事务日志保持同步
3. Greenplum安装1.主机配置
主机名 |
IP |
备注 |
rac1 |
10.45.53.30 |
master节点 |
rac2 |
10.45.53.31 |
segment节点1 |
rac3 |
10.45.7.128 |
segment节点2 |
2. 获取greenplum软件
Download VMware Tanzu™ Greenplum® — VMware Tanzu Network(需注册账号下载)
3. 解压安装(master节点)
unzip greenplum-db-5.4.0-rhel7-x86_64.zip
mkdir /greenplum
./greenplum-db-5.4.0-rhel7-x86_64.bin
定义环境变量:
cd /greenplum/greenplum-db-5.4.0
source ./greenplum_path.sh
创建主机文件存储segment主机和master主机
mkdir gpconfigs
root@rac1[/greenplum/greenplum-db-5.4.0/gpconfigs]#cat hostlist
rac1
rac2
rac3
root@rac1[/greenplum/greenplum-db-5.4.0/gpconfigs]#cat seg_hosts
rac2
rac3
4. 通过免密登录在segment节点安装gp
实现免密登录
gpssh-exkeys -f /greenplum/greenplum-db-5.4.0/gpconfigs/hostlist
向所有节点部署,用户名密码为gpadmin
gpseginstall -f /greenplum/greenplum-db-5.4.0/gpconfigs/hostlist -u gpadmin -p gpadmin
此时gpadmin用户已被自动创建,且密码为gpadmin
su - gpadmin
source /greenplum/greenplum-db-5.4.0/greenplum_path.sh
建gpadmin用户之间的ssh免密登录,后续初始化时会用到
gpssh-exkeys -f /greenplum/greenplum-db-5.4.0/gpconfigs/hostlist
测试免密登录:
gpssh -f /greenplum/greenplum-db-5.4.0/gpconfigs/hostlist -e ls -l $GPHOME
chown -R gpadmin.gpadmin /greenplum
在master和segment节点创建存储区域(master节点执行):
mkdir /greenplum/data
mkdir -p /greenplum/data/master
gpssh -f /greenplum/greenplum-db-5.4.0/gpconfigs/seg_hosts -e 'mkdir -p /greenplum/data/primary'
gpssh -f /greenplum/greenplum-db-5.4.0/gpconfigs/seg_hosts -e 'mkdir -p /greenplum/data/mirror'
5. 初始化Greenplum数据库系统
拷贝自带配置文件
cp /greenplum/greenplum-db/docs/cli_help/gpinitsystem_config /greenplum/greenplum-db-5.4.0/
cd /greenplum/greenplum-db-5.4.0/
chmod 775 gpinitsystem_config
gpadmin@rac1[/greenplum/greenplum-db-5.4.0]$cat gpinitsystem_config|grep -v "#"|grep -v "^$"
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/greenplum/data/primary) #数据存储在segment节点上
MASTER_HOSTNAME=rac1
MASTER_DIRECTORY=/greenplum/data/master
MASTER_PORT=5434 #由于我的主机上已经装了pg,占用了默认的5432端口,故换另一个没被占用的端口
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=50000
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
declare -a MIRROR_DATA_DIRECTORY=(/greenplum/data/mirror) #数据存储在segment节点上
DATABASE_NAME=my
运行初始化工具
gpinitsystem -c gpinitsystem_config -h /greenplum/greenplum-db/gpconfigs/seg_hosts
如果有stanby mater (smdw)节点需要执行:
gpinitsystem -c gpinitsystem_config -h /greenplum/greenplum-db/gpconfigs/all_hosts -s smdw -S
6.配置.bash_profile(master和segment节点-好都配)
gpadmin@rac1[/greenplum]$cat .bash_profile
source /greenplum/greenplum-db-5.4.0/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/greenplum/data/master/gpseg-1
export PGPORT=5434
export PGDATABASE=my
source .bash_profile
psql测试
7.其他
在安装的时候,我们为root用户之间建立了ssh免密登录,现在安装完成了,应该删除掉,以免发生安全隐患。
gpadmin用户之间的ssh免密登录不要删除!现在gpadmin用户的密码均为“gpadmin”,为了避免发生安全隐患,请修改gpadmin用户的密码
4.客户端访问Greenplum数据库由于gp是pg的分布式变种,我们可以通过pgadmin客户端来访问gp数据库,但是需要在master节点上配置
添加下面这行到/greenplum/data/master/gpseg-1/pg_hba.conf
#allow client to access
host all gpadmin 0.0.0.0/0 trust
这样gp就允许被终端访问了
5. 新增segment节点1. 新增rac4,shard12作为segment节点3,节点4
由于开启了mirror,一旦增加mirror,无法删除,故少需要增加两个segment节点,否则报错
添加条目到/etc/hosts
2. 查询某表当前的分布情况
select * from gp_segment_configuration;
select gp_segment_id, count(*) from test1 group by gp_segment_id;
3. 主节点新建segment节点主机文件
gpadmin@rac1[/greenplum/greenplum-db-5.4.0/gpconfigs]$cat new_host
rac4
shard12
4. 配置两个segment新节点
groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin
mkdir /greenplum
usermod -d /greenplum gpadmin
chown -R gpadmin.gpadmin /greenplum
su - gpadmin
mkdir -p /greenplum/data
mkdir -p /greenplum/data/primary
mkdir -p /greenplum/data/mirror
从master节点设置ssh免密登录
gpssh-exkeys -e hostlist -x new_host
从任一segment节点scp安装文件夹给两个segment节点
scp -r greenplum-db-5.4.0 shard12:/greenplum
scp -r greenplum-db-5.4.0 rac1:/greenplum
5. 初始化segment并加入集群
产生配置文件:
gpexpand -f new_host
初始化segment数据库:
gpexpand -i gpexpand_inputfile_20190806_192831
查看新增节点:
重分布表
alter table test1 set with(reorganize=true);
6. gpcc-web安装以下操作均在master主机的gpadmin用户下
1.安装data collection agent--创建gpperfmon数据库和gpmon用户,--password后跟gpmon用户密码
gpperfmon_install --enable --password 12345 --port 5432
2.重启gp
gpstop -r
3.检查gpmmon监控是否启动
netstat -an|grep 8888
ps -ef | grep gpmmon
4.检查是否集群中的所有主机都被监控
psql -d 'gpperfmon' -c 'select * from system_now;'
5.在集群所有主机上创建gpcc-web安装目录
gpssh -f /greenplum/greenplum-db-5.28.0/gpconfigs/allhosts
=> cd /data
[mgr1]
[sdw2]
[ mdw]
[sdw1]
=> mkdir gpcc-web
[mgr1]
[sdw2]
[ mdw]
[sdw1]
6.解压安装greenplum-cc-web-4.10.0-gp5-rhel7-x86_64.zip
unzip greenplum-cc-web-4.10.0-gp5-rhel7-x86_64.zip
cd greenplum-cc-web-4.10.0-gp5-rhel7-x86_64
./gpccinstall-4.10.0 -c install.conf
cat install.conf
path = /data/gpcc-web
# Set the display_name param to the string to display in the GPCC UI.
# The default is "gpcc"
display_name = gpcc
master_port = 5432
web_port = 28080
rpc_port = 8899
enable_ssl = false
# Uncomment and set the ssl_cert_file if you set enable_ssl to true.
#ssl_cert_file = /data/gpcc-web/cert
# User interface language: 1=English, 2=Chinese, 3=Korean, 4=Russian, 5=Japanese
language = 1
7.启动gpcc
source /data/gpcc-web/greenplum-cc-4.10.0/gpcc_path.sh
gpcc start
添加source /data/gpcc-web/greenplum-cc-4.10.0/gpcc_path.sh到.bash_profile
8.检查gpcc
netstat -an|grep 28080
http://10.45.81.42:28080 gpmon/12345
9.将master生成的pg_hba.conf和.pgpass传到standby master
gpscp -h mgr1 $MASTER_DATA_DIRECTORY/pg_hba.conf =:$MASTER_DATA_DIRECTORY/
gpscp -h mgr1 ~/.pgpass =:~/
官方文档:Installing and Upgrading Pivotal Greenplum Command Center | Tanzu™ Greenplum GPCC Docs
10.可以手动将master上的gpcc切到standby master上
(1)master:
gpstop
gpcc stop
(2)stanby master:
gpactivatestandby -d $MASTER_DATA_DIRECTORY
修改/data/gpcc-web/greenplum-cc/conf/app.conf修改成master_host = mgr1 (standby master主机名)
本文来源:https://blog.csdn.net/du18020126395/article/details/123732240