Greenplum 5.16.0初探

  • 2019 年 10 月 5 日
  • 筆記

Greenplum是一款MPP型數據庫,對於數據集市而言比較合適。 

個人覺得GP目前比較尷尬。性能比Presto稍差點,唯品會已經把GP改用Presto替換看了。另外數倉/數據集市方面還有性能強悍的HAWQ ,支持更大數據規模Hadoop。

MPP數據庫擴展時,一般情況下是計算節點和數據節點一起增加的,在增加節點後,需要對數據做重分佈才能保證數據與節點的緊耦合(重新hash數據),進而保證系統的性能;Hadoop在增加存儲層節點後,雖然也需要Rebalance數據,但相較MPP而言,不是那麼緊迫。

因此,作為一個非大數據的DBA,我這裡只是對GP的大致了解下,沒有過多深入。

GP的結構

GP的安裝部署

CentOS下建議使用XFS文件系統。

IP地址

主機名

角色

192.168.2.11

dw-greenplum-1     mdw

Master

192.168.2.12

dw-greenplum-2     sdw1

Primary1Primary2Mirror5Mirror6

192.168.2.13

dw-greenplum-3     sdw2

Primary3Primary4Mirror1Mirror2

192.168.2.14

dw-greenplum-4     sdw3

Primary5Primary6Mirror3Mirror4Standby

1、分別到各個節點上設置主機名

hostnamectl set-hostname dw-greenplum-1

hostnamectl set-hostname dw-greenplum-2

hostnamectl set-hostname dw-greenplum-3

hostnamectl set-hostname dw-greenplum-4

每台機器修改內核參數

echo 'kernel.shmmax = 500000000

kernel.shmmni = 4096

kernel.shmall = 4000000000

kernel.sem = 250 512000 100 2048

kernel.sysrq = 1

kernel.core_uses_pid = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.msgmni = 2048

net.ipv4.tcp_syncookies = 1

net.ipv4.ip_forward = 0

net.ipv4.conf.default.accept_source_route = 0

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.conf.all.arp_filter = 1

net.ipv4.ip_local_port_range = 1025 65535

net.core.netdev_max_backlog = 10000

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

vm.overcommit_memory = 2' >> /etc/sysctl.conf

sysctl -p     # 讓參數生效

每台機器修改文件打開數等限制

echo '* soft nofile 65536

* hard nofile 65536

* soft nproc 131072

* hard nproc 131072' >> /etc/security/limits.conf

2、需要配置hosts解析

cat /etc/hosts  增加下面4行

192.168.2.11  dw-greenplum-1 mdw

192.168.2.12  dw-greenplum-2 sdw1

192.168.2.13  dw-greenplum-3 sdw2

192.168.2.14  dw-greenplum-4 sdw3

3、創建用戶和用戶組

groupdel gpadmin

userdel pgadmin

groupadd -g 530 gpadmin

useradd -g 530 -u 530 -m -d /home/pgadmin -s /bin/bash gpadmin

4、為文件夾賦權,為新用戶創建密碼

chown -R gpadmin.gpadmin /home/gpadmin

echo '123456' | passwd –stdin gpadmin

5、安裝gp二進制包 【這個操作只在mdw節點上執行安裝gp二進制包,然後其它節點可以通過scp拷貝安裝包的方式部署】

先創建相關的目錄並授權

mkdir /opt/greenplum

chown -R  gpadmin.gpadmin /opt/greenplum/

unzip greenplum-db-5.16.0-rhel7-x86_64.zip

./greenplum-db-5.16.0-rhel7-x86_64.bin

配置 hostlist 和 seg_hosts文件

su – gpadmin

echo  'source /opt/greenplum/greenplum-db/greenplum_path.sh'  >>  .bash_profile

source .bash_profile   # 使環境變量生效

mkdir conf && cd conf

cat hostlist  內容如下:

mdw

sdw1

sdw2

sdw3

cat seg_hosts   內容如下:

sdw1

sdw2

sdw3

然後,使用 gpssh-exkeys 打通全部的服務器

### 這裡的密碼是 123456

打通機器通道之後,我們就可以使用 gpssh 命令對所有機器進行批量操作了。

將軟件分發到每一台機器上:

cd /opt/greenplum

tar -cf  gp-5.16.0.tar greenplum-db-5.16.0

chown gpadmin.gpadmin gp-5.16.0.tar

su – gpadmin

cd /opt/greenplum

gpscp -f /home/gpadmin/conf/hostlist  gp-5.16.0.tar =:/opt/greenplum

然後 ,可以使用pgssh 批量解壓文件包

gpssh -f hostlist

cd /opt/greenplum

tar -xf gp-5.16.0.tar

ln -s greenplum-db-5.16.0 greenplum-db

下面,開始創建數據庫數據目錄:

su – gpadmin

MASTER、Standby目錄:

mkdir /home/gpadmin/gpdata/gpmaster -pv

Primary節點目錄:

mkdir /home/gpadmin/gpdata/gpdatap1 -pv

mkdir /home/gpadmin/gpdata/gpdatap2 -pv

Mirror節點目錄:

mkdir /home/gpadmin/gpdata/gpdatam1 -pv

mkdir /home/gpadmin/gpdata/gpdatam2 -pv

GPMaster 目錄保存Master的數據,每個機器上的 gpdatap1、gpdatap2 分別對應每個機器上的兩個主數據節點目錄, 同樣的,gpdatam1、gpdatam2 對應備數據節點目錄。

配置 .bash_profile, 在mdw節點執行:

su – gpadmin

echo 'export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1

export PGPORT=5432

export PGDATABASE=testDB' >>  /home/gpadmin/.bash_profile

source  /home/gpadmin/.bash_profile

初始化GP的配置文件

su – gpadmin

cd $GPHOME/docs/cli_help/gpconfigs

cp gpinitsystem_config  /home/gpadmin/conf/   # gpinitsystem_config這是個模板文件,用來做參照用

vim initgp_config  編寫一個初始化用的配置文件,如下:

ARRAY_NAME="Greenplum"

SEG_PREFIX=gpseg

PORT_BASE=33000

declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)

MASTER_HOSTNAME=mdw

MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster

MASTER_PORT=5432

TRUSTED_SHELL=/usr/bin/ssh

CHECK_POINT_SEGMENTS=8

ENCODING=UNICODE

MIRROR_PORT_BASE=43000

REPLICATION_PORT_BASE=34000

MIRROR_REPLICATION_PORT_BASE=44000

declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)

MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts

使用pginitsystem命令來初始化數據庫

gpinitsystem -c initgp_config -h seg_hosts -s sdw3

參數說明:

gpinitsystem -c <gpinitsystem_config>

            [-h <hostfile_gpinitsystem>]

            [-B <parallel_processes>]

            [-p <postgresql_conf_param_file>]

            [-s <standby_master_host>

                [-P <standby_master_port>] [-F <standby_master_filespaces>]]

            [–max_connections=<number>] [–shared_buffers=<size>]

            [–locale=<locale>] [–lc-collate=<locale>]

            [–lc-ctype=<locale>] [–lc-messages=<locale>]

            [–lc-monetary=<locale>] [–lc-numeric=<locale>]

            [–lc-time=<locale>] [–su_password=<password>]

            [-S] [-a] [-q] [-l <logfile_directory>] [-D]

上面的命令執行成功後,類似如下圖:

可以在 mdw上登錄到gp查看下情況:

可以看出,PG5.16.0 是基於 PG8.3構建的。

安裝GPCC web界面

官方文檔:http://gpcc.docs.pivotal.io/450/topics/setup-install-top.html

在dw-greenplum-1 節點上執行如下操作:

1 先安裝監控庫和創建賬號

su – gpadmin

gpperfmon_install –enable –password gpmon –port 5432    # 安裝gpperfmon數據庫,以及為gpmon用戶創建密碼,端口是greenplum配置的端口

gpstop -M fast -a

gpstart -a

ps -ef | grep gpmmon

psql -d 'gpperfmon' -c 'select * from system_now'  檢查是否安裝了gperfmon庫

拷貝 dw-greenplum-1 上master節點的pg_hba.conf 文件的如下內容到standby節點的pg_hba.conf 中,確保二者一致的。

local    gpperfmon   gpmon         md5

host     all         gpmon         127.0.0.1/28    md5

host     all         gpmon         ::1/128         md5

拷貝 dw-greenplum-1 上master節點的.pgpass 到standby節點:

scp /home/gpadmin/.pgpass  gpadmin@sdw3:~/.pgpass

在sdw3這個standby上設置下pgpass的權限:chmod /home/gpadmin/.pgpass

在 dw-greenplum-1 上執行下 gpstop -u   # 重載下配置文件

2安裝greenplum-cc-web程序

su – gpadmin

cd conf/

gpssh -f hostlist

=> cd /opt/greenplum/

=> mkdir /opt/greenplum/greenplum-cc-web-4.5.1

=> chown gpadmin:gpadmin /opt/greenplum/greenplum-cc-web-4.5.1

=> exit   退出gpssh控制台

su – gpadmin

unzip greenplum-cc-web-4.5.1-LINUX-x86_64.zip

cd  greenplum-cc-web-4.5.1-LINUX-x86_64

./gpccinstall-4.5.1

然後,添加下環境變量

echo 'source  /opt/greenplum/greenplum-cc-web-4.5.1/greenplum-cc-web-4.5.1/gpcc_path.sh' >> /home/gpadmin/.bash_profile

上面的安裝執行完成後,還需要配置下pg_hba文件:

vim /home/gpadmin/gpdata/gpmaster/gpseg-1/pg_hba.conf

#在最後一行添加這句

host     all         gpmon         192.168.2.0/24     md5

gpstop -u  然後重載配置文件(實際上這裡只需要重載下master節點的配置文件)

gpcc start

訪問 http://192.168.2.11:28080   賬號密碼 都是 gpmon  效果如下圖:

其它幾個常用的命令:

gpcc stop

gpcc status

gpcc –settings