Greenplum6.9叢集安裝文件
1.1 機器配置
-
系統: Centos7
-
master: 32G 記憶體, 500G 磁碟 (1臺)
-
segment: 64G 記憶體, 2T 磁碟 (10臺)
1.2 域名解析配置
-
登入各臺主機, vim /etc/hosts, 將IP和域名對映配置新增到末尾, 從而使5臺機器能通過域名訪問。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.4.37.16 GP-Data-1 sdw1 10.4.37.17 GP-Data-2 sdw2 10.4.37.18 GP-Data-3 sdw3 10.4.37.19 GP-Data-4 sdw4 10.4.37.20 GP-Data-5 sdw5 10.4.37.21 GP-Data-6 sdw6 10.4.37.22 GP-Data-7 sdw7 10.4.37.23 GP-Data-8 sdw8 10.4.37.24 GP-Data-9 sdw9 10.4.37.25 GP-Data-10 sdw10 10.4.37.15 GP-Master mdw
1.3 準備工作(11臺)
-
關閉selinux
-
vim /etc/selinux/config
SELINUX=disabled
-
-
關閉防火牆
-
檢視防火牆狀態
firewall-cmd --state
-
停止firewall
systemctl stop firewalld.service
-
1.4 設定系統引數
-
vim /etc/sysctl.conf 修改核心配置
-
引數案例
kernel.shmall = 4000000000 kernel.shmmax = 500000000 kernel.shmmni = 4096 vm.overcommit_memory = 2 vm.overcommit_ratio = 95 net.ipv4.ip_local_port_range = 10000 65535 kernel.sem = 500 2048000 200 40960 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.swappiness = 10 vm.zone_reclaim_mode = 0 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 vm.dirty_background_ratio = 0 vm.dirty_ratio = 0 vm.dirty_background_bytes = 1610612736 vm.dirty_bytes = 4294967296
-
備註:
備註<1><2> kernel.shmall(共享記憶體頁總數) kernel.shmmax (共享記憶體段的最大值) 一般來講,這兩個引數的值應該是實體記憶體的一半,可以通過作業系統的值_PHYS_PAGES和PAGE_SIZE計算得出。 kernel.shmall = ( _PHYS_PAGES / 2) kernel.shmmax = ( _PHYS_PAGES / 2) * PAGE_SIZE 也可以通過以下兩個命令得出這兩個引數的值: $ echo $(expr $(getconf _PHYS_PAGES) / 2) $ echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE)) 如果得出的kernel.shmmax值小於系統的預設值,則引用系統預設值即可 備註<3> segment使用的埠是6000開始 segment mirror使用的埠是7000開始 所以配置預設值即可 net.ipv4.ip_local_port_range = 10000 65535 備註<5> 對於64G記憶體的作業系統,建議配置如下值: vm.dirty_background_ratio = 0 vm.dirty_ratio = 0 vm.dirty_background_bytes = 1610612736 # 1.5GB vm.dirty_bytes = 4294967296 # 4GB 對於小於64G記憶體的作業系統,建議配置如下值: vm.dirty_background_ratio = 3 vm.dirty_ratio = 10
-
修改後使用的引數
# master kernel.shmall = 68719476736 kernel.shmmax = 4294967296 # segment kernel.shmall = 4000000000 kernel.shmmax = 500000000 kernel.shmmni = 4096 vm.overcommit_memory = 2 vm.overcommit_ratio = 95 net.ipv4.ip_local_port_range = 10000 65535 kernel.sem = 500 2048000 200 40960 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.swappiness = 10 vm.zone_reclaim_mode = 0 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 vm.dirty_background_ratio = 0 vm.dirty_ratio = 0 vm.dirty_background_bytes = 1610612736 vm.dirty_bytes = 4294967296
-
執行命令使之生效
sysctl -p
1.5 配置資源限制引數(11臺)
-
vim /etc/security/limits.conf
* soft nofile 524288 * hard nofile 524288 * soft nproc 131072 * hard nproc 131072
1.6 建立使用者及使用者組(11臺)
-
建立gpadmin使用者及使用者組, 將其作為安裝greenplum的作業系統使用者。
-
如果已經存在, 先刪除
groupdel gpadmin userdel gpadmin
-
建立新的使用者和使用者組
groupadd -g 530 gpadmin useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
-
對資料夾進行賦權, 為新使用者建立密碼
chown -R gpadmin:gpadmin /home/gpadmin/ passwd gpadmin
2.1 RPM方式安裝到指定目錄
-
github下載rpm包, 地址: https://github.com/greenplum-db/gpdb/releases
-
上傳後執行以下命令將greenplum安裝到指定目錄:
rpm -ivh --prefix=/opt/greenplum greenplum-db-6.9.0-rhel7-x86_64.rpm
-
賦予許可權
chown -R gpadmin:gpadmin /opt/greenplum/greenplum*
-
應用環境變數
-
安裝完成後,greenplum的環境變數,已經在 greenplum_path.sh 中設定了,這裡需要應用一下變數。用 gpadmin 使用者,登入到 master host:
su gpadmin source /opt/greenplum/greenplum-db/greenplum_path.sh
-
2.2 配置免密登入(每臺機器)
-
切換使用者gpadmin
su gpadmin cd ~ ssh-keygen -t rsa
-
在~目錄下vim .ssh/authorized_keys:
將幾臺虛擬機器公鑰都存入該檔案中, 每臺的authorized_keys都一致
cd .ssh touch authorized_keys cat id_rsa.pub >> authorized_keys
-
如果發現還是要密碼:
chown gpadmin: /home/gpadmin/.ssh chown gpadmin: /home/gpadmin/.ssh/* chmod 700 /home/gpadmin/.ssh chmod 600 /home/gpadmin/.ssh/*
-
免密登入成功案例:
-
建立hostlist, seg_hosts(Master)
-
建立目錄/home/gpadmin/conf,再分別建立hostlist,seg_hosts。 hostlist 中填寫所有節點的主機別名,seg_hosts 中填寫所有Segment 的主機別名。
mkdir /home/gpadmin/conf cd /home/gpadmin/conf touch hostlist touch seg_hosts
-
-
使用gpssh-exkeys打通所有伺服器(Master)
cd /home/gpadmin/conf gpssh-exkeys -f hostlist
-
若出現Offending key for IP in /root/.ssh報錯請參考: https://blog.csdn.net/qq_34901049/article/details/99828967
-
執行成功:
-
-
在打通所有機器通道之後,我們就可以使用 gpssh 命令對所有機器進行批量操作了。
gpssh -f hostlist
- 優勢: 只需要操作一次,就完成到全部叢集的操作
2.3 分發資料庫檔案
-
打包
cd /opt/greenplum tar -cf gp6.tar greenplum-db-6.9.0 chown -R gpadmin:gpadmin /opt/greenplum/gp6.tar
- 打包的時候許可權不夠,我換成root,然後再把.tar的許可權還給gpadmin。
-
分發(切回gpadmin)
source /opt/greenplum/greenplum-db/greenplum_path.sh gpscp -f /home/gpadmin/conf/hostlist gp6.tar =:/opt/greenplum
-
這裡報錯:
Error:scp: /opt/greenplum/gp6.tar: Permission denied
-
原因是: 別的機器上還沒有此目錄,在其他幾臺機器上要建立/opt/greenplum目錄並修改許可權
mkdir -p /opt/greenplum chown -R gpadmin:gpadmin /opt/greenplum
-
再次執行後成功
-
-
解壓(master上執行, 一臺上操作所有)
gpssh -f /home/gpadmin/conf/hostlist cd /opt/greenplum tar -xf gp6.tar ln -s greenplum-db-6.9.0 greenplum-db exit
2.4 環境配置
-
建立資料儲存空間
-
Master
mkdir -p /home/gpadmin/data/master
-
Segment
source /opt/greenplum/greenplum-db/greenplum_path.sh gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datap1' gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datap2' gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datap3' gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datam1' gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datam2' gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datam3'
-
-
配置.bash_profile 環境變數(11臺都配了)
source /opt/greenplum/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/home/gpadmin/data/master/gpseg-1 export PGPORT=5432 export PGUSER=gpadmin # 沒配db預設使用postgres
-
使之生效:
source /home/gpadmin/.bash_profile
-
-
初始化配置檔案
mkdir /home/gpadmin/gpconfigs cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
-
#資料庫代號 ARRAY_NAME="Greenplum" #segment字首 SEG_PREFIX=gpseg #primary segment 起始的埠號 PORT_BASE=33000 #指定primary segment的資料目錄,網上寫的是多個相同目錄,多個目錄表示一臺機器有多個segment declare -a DATA_DIRECTORY=(/home/gpadmin/data/datap1 /home/gpadmin/data/datap2 /home/gpadmin/data/datap3) #master所在機器的host name MASTER_HOSTNAME=mdw #master的資料目錄 MASTER_DIRECTORY=/home/gpadmin/data/master #master的埠 MASTER_PORT=5432 #指定bash的版本 TRUSTED_SHELL=/usr/bin/ssh #將日誌寫入磁碟的間隔,每個段檔案通常 =16MB < 2 * CHECK_POINT_SEGMENTS + 1 CHECK_POINT_SEGMENTS=8 #字符集 ENCODING=UNICODE #mirror segment 起始的埠號 MIRROR_PORT_BASE=44000 # mirror的資料目錄,和主資料一樣,一個對一個,多個對多個 declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/datam1 /home/gpadmin/data/datam2 /home/gpadmin/data/datam3)
-
-
host檔案: hostfile_gpinitsystem
sdw1 sdw2 sdw3 sdw4 sdw5 sdw6 sdw7 sdw8 sdw9 sdw10
3.1 初始化資料庫
-
安裝
cd .. source /opt/greenplum/greenplum-db/greenplum_path.sh gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
-
沒有報錯的話一路yes, 之前是因為多了hostfile_gpinitsystem多了mdw所以報錯了。
3.2 使用資料庫
-
登入
psql -d postgres
-
允許外部登入
-
navicat登入
-
由於gp有空值許可權, 並不是所有的機器都可以連線到資料庫, 需要在pg_hba.conf檔案增加客戶端機器的許可權。
-
先給gpadmin建立密碼
alter role gpadmin with password 'gpadmin';
-
找到pg_hba.conf位置
find / -type f -name pg_hba.conf
-
在/home/gpadmin/data/master/gpseg-1目錄下, vim 新增一行:
host all gpadmin 10.4.36.3/32 trust
-
-
重新整理
pg_ctl reload -D /home/gpadmin/data/master/gpseg-1
-
Navicat測試連線成功
-
-
4.1 Greenplum6調參
(1)全域性死鎖檢測開關
在Greenplum 6中其預設關閉,需要開啟它才可以支援併發更新/刪除操作;
gpconfig -c gp_enable_global_deadlock_detector -v on
(2) 禁用GPORCA優化器(GPDB6預設的優化器為:GPORCA, 還不夠成熟)
gpconfig -c optimizer -v off
(3)關閉日誌
此GUC減少不必要的日誌,避免日誌輸出對I/O效能的干擾。
gpconfig -c log_statement -v none