【GP6安裝配置】 Greenplum6.2.1 安裝手記(下)

作者:lianghc
本文分爲兩部分

參數配置:【GP6安裝配置】 Greenplum6.2.1 安裝手記(上) 

執行安裝:【GP6安裝配置】 Greenplum6.2.1 安裝手記(下)

目錄

3. 集羣軟件安裝

3.1 執行安裝程序

3.2 創建hostfile_exkeys

3.3 集羣互信,免密登陸

3.3.1  生成密鑰

3.3.2 將本機的公鑰複製到各個節點機器的authorized_keys文件中

3.3.3 使用gpssh-exkeys 工具,打通n-n的免密登陸

3.3.4 驗證gpssh

3.4 同步master 配置到各個主機(非官方教程步驟)

3.4.1 批量添加gpadmin用戶

3.4.2 打通gpadmin 用戶免密登錄

3.4.3 批量設置greenplum在gpadmin用戶的環境變量

3.4.4  批量複製系統參數到其他節點

3.5 集羣節點安裝

3.5.1 模擬gpseginstall 腳本

3.5.2 創建集羣數據目錄

3.6 集羣性能測試

3.6.1 網絡性能測試

3.6.2 磁盤I/O 性能測試

3.6.3 集羣時鐘校驗(非官方步驟)

4.  集羣初始化

4.1  編寫初始化配置文件

4.1.1 拷貝配置文件模板

4.1.2 根據需要修改參數

4.2 集羣初始化

4.2.1 集羣初始化命令參數

4.2.2 執行報錯處理

4.3 初始化完成後續操作

4.3.2 設置環境變量

4.3.3 若刪除重裝,使用gpdeletesystem

4.3.4 配置pg_hba.conf

5 安裝成功後配置

5.1 psql 登陸gp 並設置密碼

5.1.1 登陸到不同節點

5.2 客戶端登陸gp

5.2.1. 配置 pg_hba.conf

5.2.2. 修改postgresql.conf 

5.2.3. 加載修改的文件


3. 集羣軟件安裝

參考:https://gpdb.docs.pivotal.io/6-2/install_guide/install_gpdb.html
# 與舊版本差異點

gp4.x/gp5.x 以前安裝分爲三部分
   1. 安裝master(一般是個bin的可執行文件,安裝,並可以指定安裝目錄)
   2. gpseginstall 安裝各個seg
   3. gp羣參數校驗  
   4. gpinitsystem 集羣初始化
   
gp6.2 開始不提供zip 格式壓縮包,僅提供rpm包,安裝分爲兩步
   1. 安裝master(rpm -ivh / yum install -y),不可以指定安裝目錄,默認安裝到/usr/local/
  2. gp6 沒有 gpseginstall工具。所以要麼自己打包master 安裝好的gp目錄並傳到seg上,要麼各個節點單獨yum 安裝。
     1.每個節點主機,單獨yum
     2.打包主節點的安裝目錄,並分發給seg主機。
  3. 集羣性能校驗
  4. gpinitsystem 集羣初始化 

3.1 執行安裝程序

       執行安裝腳本,默認安裝到/usr/local/ 目錄下。

 yum install -y ./greenplum-db-6.2.1-rhel6-x86_64.rpm

或者使用rpm 安裝

rpm -ivh greenplum-db-6.2.1-rhel6-x86_64.rpm

       本次測試是內網機,無法聯網下載所有的依賴包,也沒有提前外網下載好依賴包。而是等安裝時缺什麼,再下載什麼。現在缺少 libyaml,下載並上傳至服務器,安裝後再試運行gp安裝程序。libyaml下載地址 http://rpmfind.net/linux/rpm2html/search.php?query=libyaml(x86-64)


[root@mdw gp_install_package]#  yum install -y ./greenplum-db-6.2.1-rhel6-x86_64.rpm
Loaded plugins: product-id, refresh-packagekit, search-disabled-repos, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
Examining ./greenplum-db-6.2.1-rhel6-x86_64.rpm: greenplum-db-6.2.1-1.el6.x86_64
Marking ./greenplum-db-6.2.1-rhel6-x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package greenplum-db.x86_64 0:6.2.1-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================
 Package                         Arch                      Version                           Repository                                           Size
=======================================================================================================================================================
Installing:
 greenplum-db                    x86_64                    6.2.1-1.el6                       /greenplum-db-6.2.1-rhel6-x86_64                    493 M

Transaction Summary
=======================================================================================================================================================
Install       1 Package(s)

Total size: 493 M
Installed size: 493 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : greenplum-db-6.2.1-1.el6.x86_64                                                                                                     1/1
  Verifying  : greenplum-db-6.2.1-1.el6.x86_64                                                                                                     1/1

Installed:
  greenplum-db.x86_64 0:6.2.1-1.el6

Complete!


3.2 創建hostfile_exkeys

在$GPHOME目錄創建兩個host文件(all_host,seg_host),用於後續使用gpssh,gpscp 等腳本host參數文件
all_host : 內容是集羣所有主機名或ip,包含master,segment,standby等。
seg_host: 內容是所有 segment主機名或ip
若一臺機器有多網卡,且網卡沒有綁定成bond0模式時,需要將多網卡的ip 或者host都列出來。

[root@mdw ~]# cd /usr/local/
[root@mdw local]# ls
bin  etc  games  greenplum-db  greenplum-db-6.2.1  include  lib  lib64  libexec  openssh-6.5p1  sbin  share  src  ssl
[root@mdw local]# cd greenplum-db
[root@mdw greenplum-db]# ls
bin  docs  etc  ext  greenplum_path.sh  include  lib  open_source_license_pivotal_greenplum.txt  pxf  sbin  share
[root@mdw greenplum-db]# vi all_host
[root@mdw greenplum-db]# vi seg_host
[root@mdw greenplum-db]# cat all_host
mdw
sdw1
sdw2
[root@mdw greenplum-db]# cat seg_host
sdw1
sdw2

修改文件夾權限

[root@mdw greenplum-db]# chown -R gpadmin:gpadmin /usr/local/greenplum*

3.3 集羣互信,免密登陸

## 與舊版本差異點
   gp6.x 以前無需3.3.1 ssh-keygen生成密鑰,3.3.2 的ssh-copy-id 步驟,直接gpssh-exkeys -f all_host。


3.3.1  生成密鑰

我的Linux還沒有公私鑰對,所以,要先生成一個

[root@mdw greenplum-db]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
88:c0:be:87:6a:c2:40:ed:fd:ab:34:f0:35:60:47:0f root@mdw
The key's randomart image is:
+--[ RSA 2048]----+
|       E         |
| .    . o        |
|  +  o . .       |
| o o..o.         |
|. o.o .oS        |
|.  +o.. .        |
|o o .+.          |
|.+ .. ..         |
|+    ....        |
+-----------------+

3.3.2 將本機的公鑰複製到各個節點機器的authorized_keys文件中

[root@mdw greenplum-db]# ssh-copy-id sdw1

[root@mdw greenplum-db]# ssh-copy-id sdw2


3.3.3 使用gpssh-exkeys 工具,打通n-n的免密登陸

[root@mdw greenplum-db]# gpssh-exkeys -f all_host
Problem getting hostname for gpzq-sh-mb: [Errno -3] Temporary failure in name resolution
Traceback (most recent call last):
  File "/usr/local/greenplum-db/./bin/gpssh-exkeys", line 409, in <module>
    (primary, aliases, ipaddrs) = socket.gethostbyaddr(hostname)
socket.gaierror: [Errno -3] Temporary failure in name resolution
# 沒有做章節( 2.2.1 配置每臺機器host )的內容,導致上述錯誤
[root@gjzq-sh-mb greenplum-db]# hostname mdw
[root@gjzq-sh-mb greenplum-db]# gpssh-exkeys -f all_host
[STEP 1 of 5] create local ID and authorize on local host
  ... /root/.ssh/id_rsa file exists ... key generation skipped

[STEP 2 of 5] keyscan all hosts and update known_hosts file

[STEP 3 of 5] retrieving credentials from remote hosts
  ... send to sdw1
  ... send to sdw2

[STEP 4 of 5] determine common authentication file content

[STEP 5 of 5] copy authentication files to all remote hosts
  ... finished key exchange with sdw1
  ... finished key exchange with sdw2

[INFO] completed successfully

3.3.4 驗證gpssh

[root@mdw ~]# source /usr/local/greenplum-db/greenplum_path.sh
[root@mdw ~]# gpssh -f /usr/local/greenplum-db/all_host -e 'ls /usr/local/'
[ mdw] ls /usr/local/
[ mdw] bin  games          greenplum-db-6.2.1  lib    libexec        sbin   src
[ mdw] etc  greenplum-db  include              lib64  openssh-6.5p1  share  ssl
[sdw1] ls /usr/local/
[sdw1] bin  games    lib    libexec         sbin   src
[sdw1] etc  include  lib64  openssh-6.5p1  share  ssl
[sdw2] ls /usr/local/
[sdw2] bin  games    lib    libexec         sbin   src
[sdw2] etc  include  lib64  openssh-6.5p1  share  ssl

3.4 同步master 配置到各個主機(非官方教程步驟)


本步驟非官方教程內容,官方教程在修改系統參數步驟中 就已經把集羣所有主機的配置都改成一致的。本文檔中前面修改參數部分,只修改master主機的參數,在本步驟中做集羣統一配置。

3.4.1 批量添加gpadmin用戶

[root@mdw greenplum-db]# source greenplum_path.sh
[root@mdw greenplum-db]# gpssh -f seg_host -e 'groupadd gpadmin;useradd gpadmin -r -m -g gpadmin;echo "gpadmin" | passwd --stdin gpadmin;'
[root@mdw greenplum-db]# gpssh -f seg_host -e 'ls /home/'

3.4.2 打通gpadmin 用戶免密登錄

 ## 與舊版本差異點
gp6 之前,gpadmin 用戶的 免密登錄步驟由gpseginstall 工具自動處理,gp6 需要人工處理。
[root@mdw greenplum-db-6.2.1]# su - gpadmin
[gpadmin@mdw ~]$ source /usr/local/greenplum-db/greenplum_path.sh
[gpadmin@mdw ~]$ ssh-keygen
[gpadmin@mdw ~]$ ssh-copy-id sdw1
[gpadmin@mdw ~]$ ssh-copy-id sdw2
[gpadmin@mdw ~]$ gpssh-exkeys -f /usr/local/greenplum-db/all_host

3.4.3 批量設置greenplum在gpadmin用戶的環境變量

添加gp的安裝目錄,和話環境信息到 用戶的環境變量中。
編輯 .bash_profile

cat >> /home/gpadmin/.bash_profile << EOF
source /usr/local/greenplum-db/greenplum_path.sh
EOF

編輯 .bashrc

cat >> /home/gpadmin/.bashrc << EOF
source /usr/local/greenplum-db/greenplum_path.sh
EOF

環境變量文件分發到其他節點

su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh
gpscp -f /usr/local/greenplum-db/seg_host /home/gpadmin/.bash_profile  gpadmin@=:/home/gpadmin/.bash_profile
gpscp -f /usr/local/greenplum-db/seg_host /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc 


3.4.4  批量複製系統參數到其他節點

# 示例:
su root
gpscp -f seg_host /etc/hosts   root@=:/etc/hosts
gpscp -f seg_host /etc/security/limits.conf   root@=:/etc/security/limits.conf 
gpscp -f seg_host /etc/sysctl.conf  root@=:/etc/sysctl.conf 
gpscp -f seg_host /etc/security/limits.d/90-nproc.conf   root@=:/etc/security/limits.d/90-nproc.conf
gpssh -f seg_host -e '/sbin/blockdev --setra 16384 /dev/sda'
gpssh -f seg_host -e 'echo deadline > /sys/block/sda/queue/scheduler'
gpssh -f seg_host -e 'sysctl -p'
gpssh -f seg_host -e 'reboot'

3.5 集羣節點安裝

## 與舊版本差異點
   目前官網缺少這部分說明。
在gp6 之前,有一個工具gpseginstall ,可以安裝各個節點的gp軟件。根據gpseginstall的日誌可以分析出,gpseginstall的主要步驟是:
1. 節點上創建gp用戶 (此步驟可略過)
2. 打包主節點安裝目錄
3. scp到各個seg 服務器
4. 解壓,創建軟連接
5. 授權給gpamdin
gpseginstall 安裝日誌,參考gp5 安裝筆記


3.5.1 模擬gpseginstall 腳本

以下腳本模擬gpseginstall 的主要過程,完成gpsegment的部署

# root 用戶下執行
# 變量設置
link_name='greenplum-db'                    #軟連接名
binary_dir_location='/usr/local'            #安裝路徑
binary_dir_name='greenplum-db-6.2.1'        #安裝目錄
binary_path='/usr/local/greenplum-db-6.2.1' #全目錄

# master節點上打包

chown -R gpadmin:gpadmin $binary_path
rm -f ${binary_path}.tar; rm -f ${binary_path}.tar.gz
cd $binary_dir_location; tar cf ${binary_dir_name}.tar ${binary_dir_name}
gzip ${binary_path}.tar

# 分發到segment

gpssh -f ${binary_path}/seg_host -e "mkdir -p ${binary_dir_location};rm -rf ${binary_path};rm -rf ${binary_path}.tar;rm -rf ${binary_path}.tar.gz"
gpscp -f ${binary_path}/seg_host ${binary_path}.tar.gz root@=:${binary_path}.tar.gz
gpssh -f ${binary_path}/seg_host -e "cd ${binary_dir_location};gzip -f -d ${binary_path}.tar.gz;tar xf ${binary_path}.tar"
gpssh -f ${binary_path}/seg_host -e "rm -rf ${binary_path}.tar;rm -rf ${binary_path}.tar.gz;rm -f ${binary_dir_location}/${link_name}"
gpssh -f ${binary_path}/seg_host -e ln -fs ${binary_dir_location}/${binary_dir_name} ${binary_dir_location}/${link_name}
gpssh -f ${binary_path}/seg_host -e "chown -R gpadmin:gpadmin ${binary_dir_location}/${link_name};chown -R gpadmin:gpadmin ${binary_dir_location}/${binary_dir_name}"
gpssh -f ${binary_path}/seg_host -e "source ${binary_path}/greenplum_path"
gpssh -f ${binary_path}/seg_host -e "cd ${binary_dir_location};ll"

3.5.2 創建集羣數據目錄

3.5.2.1 創建master 數據目錄

 mkdir -p /opt/greenplum/data/master
 chown gpadmin:gpadmin /opt/greenplum/data/master

standby 數據目錄(本次實驗沒有standby )
使用gpssh 遠程給standby 創建數據目錄

# source /usr/local/greenplum-db/greenplum_path.sh 
# gpssh -h smdw -e 'mkdir -p /data/master'
# gpssh -h smdw -e 'chown gpadmin:gpadmin /data/master'

3.5.2.2 創建segment 數據目錄
本次計劃每個主機安裝兩個 segment,兩個mirror.

source /usr/local/greenplum-db/greenplum_path.sh 
gpssh -f /usr/local/greenplum-db/seg_host -e 'mkdir -p /opt/greenplum/data1/primary'
gpssh -f /usr/local/greenplum-db/seg_host -e 'mkdir -p /opt/greenplum/data1/mirror'
gpssh -f /usr/local/greenplum-db/seg_host -e 'mkdir -p /opt/greenplum/data2/primary'
gpssh -f /usr/local/greenplum-db/seg_host -e 'mkdir -p /opt/greenplum/data2/mirror'
gpssh -f /usr/local/greenplum-db/seg_host -e 'chown -R gpadmin /opt/greenplum/data*'


3.6 集羣性能測試

## 與舊版本差異點
   gp6 取消了gpcheck 工具。目前可校驗的部分是網絡和磁盤IO性能。
   gpcheck工具可以對gp需要的系統參數,硬件配置進行校驗

詳情參考官網:
https://gpdb.docs.pivotal.io/6-2/install_guide/validate.html#topic1
擴展閱讀:
https://yq.aliyun.com/articles/230896?spm=a2c4e.11155435.0.0.a9756e1eIiHSoH

個人經驗(僅供才考,具體標準 要再找資料):
一般來說磁盤要達到2000M/s
網絡至少1000M/s

3.6.1 網絡性能測試

實驗示例:


[root@mdw local]#  gpcheckperf -f /usr/local/greenplum-db/seg_host -r N -d /tmp
/usr/local/greenplum-db/./bin/gpcheckperf -f /usr/local/greenplum-db/seg_host -r N -d /tmp

-------------------
--  NETPERF TEST
-------------------
 Authorized only. All activity will be monitored and reported
NOTICE: -t is deprecated, and has no effect
NOTICE: -f is deprecated, and has no effect
 Authorized only. All activity will be monitored and reported
NOTICE: -t is deprecated, and has no effect
NOTICE: -f is deprecated, and has no effect
[Warning] netperf failed on sdw2 -> sdw1

====================
==  RESULT 2019-12-18T19:40:30.264321
====================
Netperf bisection bandwidth test
sdw1 -> sdw2 = 2273.930000

Summary:
sum = 2273.93 MB/sec
min = 2273.93 MB/sec
max = 2273.93 MB/sec
avg = 2273.93 MB/sec
median = 2273.93 MB/sec

 測試發現 netperf failed on sdw2 -> sdw1。檢查發現是sdw2的hosts沒有配置。

3.6.2 磁盤I/O 性能測試

實驗單機裝兩個seg,但是隻有一塊盤,所以測試一個目錄即可,測試月產生32G的數據,需要留有足夠的磁盤空間。

 gpcheckperf -f /usr/local/greenplum-db/seg_host -r ds -D   -d /opt/greenplum/data1/primary
[root@mdw greenplum-db]#  gpcheckperf -f /usr/local/greenplum-db/seg_host -r ds -D   -d /opt/greenplum/data1/primary
/usr/local/greenplum-db/./bin/gpcheckperf -f /usr/local/greenplum-db/seg_host -r ds -D -d /opt/greenplum/data1/primary
--------------------
--  DISK WRITE TEST
--------------------
--------------------
--  DISK READ TEST
--------------------
--------------------
--  STREAM TEST
--------------------
====================
==  RESULT 2019-12-18T19:59:06.969229
====================
 disk write avg time (sec): 47.34
 disk write tot bytes: 66904850432
 disk write tot bandwidth (MB/s): 1411.59
 disk write min bandwidth (MB/s): 555.60 [sdw2]
 disk write max bandwidth (MB/s): 855.99 [sdw1]
 -- per host bandwidth --
    disk write bandwidth (MB/s): 855.99 [sdw1]
    disk write bandwidth (MB/s): 555.60 [sdw2]

 disk read avg time (sec): 87.33
 disk read tot bytes: 66904850432
 disk read tot bandwidth (MB/s): 738.54
 disk read min bandwidth (MB/s): 331.15 [sdw2]
 disk read max bandwidth (MB/s): 407.39 [sdw1]
 -- per host bandwidth --
    disk read bandwidth (MB/s): 407.39 [sdw1]
    disk read bandwidth (MB/s): 331.15 [sdw2]

 stream tot bandwidth (MB/s): 12924.30
 stream min bandwidth (MB/s): 6451.80 [sdw1]
 stream max bandwidth (MB/s): 6472.50 [sdw2]
 -- per host bandwidth --
    stream bandwidth (MB/s): 6451.80 [sdw1]
    stream bandwidth (MB/s): 6472.50 [sdw2]

3.6.3 集羣時鐘校驗(非官方步驟)

驗證集羣時間,若不一致,需要修改ntp

gpssh -f /usr/local/greenplum-db/all_host -e 'date'


4.  集羣初始化

官方文檔:https://gpdb.docs.pivotal.io/6-2/install_guide/init_gpdb.html

4.1  編寫初始化配置文件

4.1.1 拷貝配置文件模板

su - gpadmin
mkdir -p /home/gpadmin/gpconfigs
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config


4.1.2 根據需要修改參數

注意:To specify PORT_BASE, review the port range specified in the net.ipv4.ip_local_port_range parameter in the /etc/sysctl.conf file.
主要修改的參數:


ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=6000
declare -a DATA_DIRECTORY=(/opt/greenplum/data1/primary /opt/greenplum/data2/primary)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/opt/greenplum/data/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=7000
declare -a MIRROR_DATA_DIRECTORY=(/opt/greenplum/data1/mirror /opt/greenplum/data2/mirror)
DATABASE_NAME=gpdw


4.2 集羣初始化

4.2.1 集羣初始化命令參數

執行腳本:

gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /usr/local/greenplum-db/seg_host -D


4.2.2 執行報錯處理

[gpadmin@mdw gpconfigs]$ gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /usr/local/greenplum-db/seg_host -D
...
/usr/local/greenplum-db/./bin/gpinitsystem: line 244: /tmp/cluster_tmp_file.8070: Permission denied
/bin/mv: cannot stat `/tmp/cluster_tmp_file.8070': Permission denied
...
20191218:20:22:57:008070 gpinitsystem:mdw:gpadmin-[FATAL]:-Unknown host sdw1: ping: icmp open socket: Operation not permitted
unknown host Script Exiting!

4.2.2.1 Permission denied 錯誤 處理

gpssh -f /usr/local/greenplum-db/all_host -e 'chmod 777 /tmp'

4.2.2.2 icmp open socket: Operation not permitted 錯誤處理

gpssh -f /usr/local/greenplum-db/all_host -e 'chmod u+s /bin/ping'

4.2.2.3 失敗回退
安裝中途失敗,提示使用  bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_* 回退,執行該腳本即可,例如:


... 
20191218:20:39:53:011405 gpinitsystem:mdw:gpadmin-[FATAL]:-Unknown host gpzq-sh-mb: ping: unknown host gpzq-sh-mb
unknown host Script Exiting!
20191218:20:39:53:011405 gpinitsystem:mdw:gpadmin-[WARN]:-Script has left Greenplum Database in an incomplete state
20191218:20:39:53:011405 gpinitsystem:mdw:gpadmin-[WARN]:-Run command bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20191218_203938 to remove these changes
20191218:20:39:53:011405 gpinitsystem:mdw:gpadmin-[INFO]:-Start Function BACKOUT_COMMAND
20191218:20:39:53:011405 gpinitsystem:mdw:gpadmin-[INFO]:-End Function BACKOUT_COMMAND
[gpadmin@mdw gpAdminLogs]$ ls
backout_gpinitsystem_gpadmin_20191218_203938  gpinitsystem_20191218.log
[gpadmin@mdw gpAdminLogs]$ bash backout_gpinitsystem_gpadmin_20191218_203938
Stopping Master instance
waiting for server to shut down.... done
server stopped
Removing Master log file
Removing Master lock files
Removing Master data directory files

若執行後仍然未清理乾淨,可執行一下語句後,再重新安裝:

pg_ctl -D /opt/greenplum/data/master/gpseg-1 stop
rm -f /tmp/.s.PGSQL.5432 /tmp/.s.PGSQL.5432.lock
rm -Rf /opt/greenplum/data/master/gpseg-1


 4.2.2.4 ping: unknown host gpzq-sh-mb unknown host Script Exiting! 錯誤
請參考:
http://note.youdao.com/noteshare?id=8a72fdf1ec13a1c79b2d795e406b3dd2&sub=313FE99D57C84F2EA498DB6D7B79C7D3
編輯 /home/gpadmin/.gphostcache 文件,爲一下內容:
[gpadmin@mdw ~]$ cat .gphostcache
mdw:mdw
sdw1:sdw1
sdw2:sdw2

4.3 初始化完成後續操作

順利初始化完成,會 打印出 Greenplum Database instance successfully created。
日誌生成到/home/gpadmin/gpAdminLogs/ 目錄下,命名規則: gpinitsystem_${安裝日期}.log
日誌最後部分如下:


...
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[WARN]:-*******************************************************
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[WARN]:-Scan of log file indicates that some warnings or errors
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[WARN]:-were generated during the array creation
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-Please review contents of log file
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-/home/gpadmin/gpAdminLogs/gpinitsystem_20191218.log
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-To determine level of criticality
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-These messages could be from a previous run of the utility
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-that was called today!
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[WARN]:-*******************************************************
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-End Function SCAN_LOG
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-Greenplum Database instance successfully created
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-To complete the environment configuration, please
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-update gpadmin .bashrc file with the following
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-1. Ensure that the greenplum_path.sh file is sourced
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-2. Add "export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1"
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-   to access the Greenplum scripts for this instance:
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-   or, use -d /opt/greenplum/data/master/gpseg-1 option for the Greenplum scripts
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-   Example gpstate -d /opt/greenplum/data/master/gpseg-1
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-Script log file = /home/gpadmin/gpAdminLogs/gpinitsystem_20191218.log
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-To remove instance, run gpdeletesystem utility
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-To initialize a Standby Master Segment for this Greenplum instance
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-Review options for gpinitstandby
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-The Master /opt/greenplum/data/master/gpseg-1/pg_hba.conf post gpinitsystem
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-has been configured to allow all hosts within this new
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-array to intercommunicate. Any hosts external to this
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-new array must be explicitly added to this file
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-Refer to the Greenplum Admin support guide which is
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-located in the /usr/local/greenplum-db/./docs directory
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------
20191218:20:45:51:013612 gpinitsystem:mdw:gpadmin-[INFO]:-End Main


仔細閱讀日誌最後面的內容,還有幾個步驟需要操作。4.3.1 檢查日誌內容
日誌中有如下提示:

Scan of log file indicates that some warnings or errors
were generated during the array creation
Please review contents of log file
/home/gpadmin/gpAdminLogs/gpinitsystem_20191218.log

Scan  warnings or errors:

 cat /home/gpadmin/gpAdminLogs/gpinitsystem_20191218.log|grep -E -i 'WARN|ERROR]'

根據日誌內容做相應的調整,使集羣性能達到最優。

4.3.2 設置環境變量

編輯gpadmin 用戶的環境變量,增加

source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1

除此之外,通常還增加:

export PGPORT=5432       # 根據實際情況填寫
export PGUSER=gpadmin    # 根據實際情況填寫
export PGDATABASE=gpdw  # 根據實際情況填寫

環境變量詳情參考:https://gpdb.docs.pivotal.io/510/install_guide/env_var_ref.html

前面已經添加過 source /usr/local/greenplum-db/greenplum_path.sh,此處操作如下:

編輯 .bash_profile

su - gpadmin
cat >> /home/gpadmin/.bash_profile << EOF
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpdw
EOF

編輯 .bashrc

cat >> /home/gpadmin/.bashrc << EOF
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpdw
EOF

環境變量文件分發到其他節點

gpscp -f /usr/local/greenplum-db/seg_host /home/gpadmin/.bash_profile  gpadmin@=:/home/gpadmin/.bash_profile
gpscp -f /usr/local/greenplum-db/seg_host /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc
gpssh -f /usr/local/greenplum-db/all_host -e 'source /home/gpadmin/.bash_profile;source /home/gpadmin/.bashrc;'

4.3.3 若刪除重裝,使用gpdeletesystem

安裝完成,出於種種原因,若需要集羣刪除重裝,使用 gpdeletesystem  工具
詳情參考官方文檔:
https://gpdb.docs.pivotal.io/6-2/utility_guide/ref/gpdeletesystem.html#topic1
使用命令:

gpdeletesystem -d /opt/greenplum/data/master/gpseg-1 -f

-d 後面跟 MASTER_DATA_DIRECTORY(master 的數據目錄),會清除master,segment所有的數據目錄。
-f force, 終止所有進程,強制刪除。示例:


[gpadmin@mdw ~]$ gpdeletesystem --help
[gpadmin@mdw ~]$ gpdeletesystem -d /opt/greenplum/data/master/gpseg-1 -f
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Checking for database dump files...
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Getting segment information...
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Greenplum Instance Deletion Parameters
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:---------------------------------------
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Greenplum Master hostname                  = localhost
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Greenplum Master data directory            = /opt/greenplum/data/master/gpseg-1
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Greenplum Master port                      = 5432
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Greenplum Force delete of dump files       = ON
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Batch size                                 = 32
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:---------------------------------------
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:- Segment Instance List
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:---------------------------------------
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Host:Datadir:Port
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-mdw:/opt/greenplum/data/master/gpseg-1:5432
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw1:/opt/greenplum/data1/primary/gpseg0:6000
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw2:/opt/greenplum/data1/mirror/gpseg0:7000
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw1:/opt/greenplum/data2/primary/gpseg1:6001
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw2:/opt/greenplum/data2/mirror/gpseg1:7001
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw2:/opt/greenplum/data1/primary/gpseg2:6000
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw1:/opt/greenplum/data1/mirror/gpseg2:7000
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw2:/opt/greenplum/data2/primary/gpseg3:6001
20191219:09:47:57:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-sdw1:/opt/greenplum/data2/mirror/gpseg3:7001

Continue with Greenplum instance deletion? Yy|Nn (default=N):
> y
20191219:09:48:01:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-FINAL WARNING, you are about to delete the Greenplum instance
20191219:09:48:01:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-on master host localhost.
20191219:09:48:01:020973 gpdeletesystem:mdw:gpadmin-[WARNING]:-There are database dump files, these will be DELETED if you continue!

Continue with Greenplum instance deletion? Yy|Nn (default=N):
> y
20191219:09:48:15:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Stopping database...
20191219:09:48:17:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Deleting tablespace directories...
20191219:09:48:17:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Waiting for worker threads to delete tablespace dirs...
20191219:09:48:17:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Deleting segments and removing data directories...
20191219:09:48:17:020973 gpdeletesystem:mdw:gpadmin-[INFO]:-Waiting for worker threads to complete...
20191219:09:48:18:020973 gpdeletesystem:mdw:gpadmin-[WARNING]:-Delete system completed but warnings were generated.

刪除完成後再根據自己需要,調整集羣初始化配置文件,並重新初始化。
vi /home/gpadmin/gpconfigs/gpinitsystem_config
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /usr/local/greenplum-db/seg_host -D


4.3.4 配置pg_hba.conf

根據訪問需要 ,配置pg_hba.conf。
/opt/greenplum/data/master/gpseg-1/pg_hba.conf

詳情參考後文:5.2.1. 配置 pg_hba.conf

5 安裝成功後配置

5.1 psql 登陸gp 並設置密碼

是用psql 登錄gp, 一般命令格式爲:

psql -h hostname -p port -d database -U user -W password

-h後面接對應的master或者segment主機名
-p後面接master或者segment的端口號
-d後面接數據庫名可將上述參數配置到用戶環境變量中,linux 中使用gpadmin用戶不需要密碼。
psql 登錄,並設置gpadmin用戶密碼示例:

[gpadmin@mdw gpconfigs]$ psql
psql (9.4.24)
Type "help" for help.

gpdw=# ALTER USER gpadmin WITH PASSWORD 'gpadmin';
ALTER ROLE
gpdw=# \q

5.1.1 登陸到不同節點

參數示意:

#登陸主節點
[gpadmin@mdw gpconfigs]$ PGOPTIONS='-c gp_session_role=utility' psql -h mdw -p5432 -d postgres

#登陸到segment,需要指定segment 端口。
[gpadmin@mdw gpconfigs]$ PGOPTIONS='-c gp_session_role=utility' psql -h sdw1 -p6000 -d postgres

5.2 客戶端登陸gp

配置 pg_hba.conf
配置 postgresql.conf

5.2.1. 配置 pg_hba.conf

 參考配置說明:https://blog.csdn.net/yaoqiancuo3276/article/details/80404883


vi /opt/greenplum523/data/master/gpseg-1/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
# IPv4 local connections:
# IPv6 local connections:
local    all         gpadmin         ident
host     all         gpadmin         127.0.0.1/28    trust
host     all         gpadmin         172.28.25.204/32       trust
host     all         gpadmin         0.0.0.0/0   md5  # 新增規則允許任意ip 密碼登陸
host     all         gpadmin         ::1/128       trust
host     all         gpadmin         fe80::250:56ff:fe91:63fc/128       trust
local    replication gpadmin         ident
host     replication gpadmin         samenet       trust

5.2.2. 修改postgresql.conf 

postgresql.conf裏的監聽地址設置爲:
listen_addresses = '*'   # 允許監聽任意ip gp6.0 默認會設置這個參數爲 listen_addresses = '*'  

vi /opt/greenplum523/data/master/gpseg-1/postgresql.conf

5.2.3. 加載修改的文件

gpstop -u 

至此,安裝完成。是用客戶端軟件登錄驗證即可。

後續再安裝擴展插件,如gpcc, dblink,madlib 等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章