Greenplum分布式安装及增加节点

2023-03-06 00:00:00 用户 数据库 节点 安装 主机

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

相关文章