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
