一,安裝說明
1.1環境說明
1、首先確定部署的環境,確定下服務器的端口,一般默認是22的端口;
2、當前這份文檔是服務器處于10022端口下部署的(現場生產環境要求,22端口在生產環境存在安全隱患);
3、操作系統Centos7.9;
4、 數據庫greenplum-db-6.19.1。
1.2集群介紹
1、本次采用的是4臺機器組成的集群:1臺機器是master節點,1臺機器是standby節點(這個節點相當于master的備用節點),2臺機器是segment節點。
2、集群的ip和hostname如下(都是虛擬機環境):
192.168.0.31 ? mdw(master節點)
192.168.0.32 ? smdw (standby節點)
192.168.0.33 ? sdw1 (segment節點)
192.168.0.34 ? sdw2 (segment節點)
二,安裝環境準備
2.1 關閉防火墻(所有節點)
1、配置的時候,要保證所有的機器的網絡都是通的,并且每臺機器的防火墻都是關閉的,避免存在網絡不通的情況。
具體操作:
systemctl stop firewalld (停止防火墻)
systemctl disable firewalld(關閉防火墻)
systemctl status firewalld(查看防火墻狀態)
截圖如下:
2.2 關閉SELINUX(所有節點)
1、修改/etc/selinux/config文件(在某些系統中,可能是/etc/sysconfig/selinux文件),將SELINUX=enforcing修改為SELINUX=disabled。更新配置之后要重啟服務器生效(這個部分可以在2.7操作完之后執行)或者執行:setenforce 0,使其立即生效。
2、具體操作:(每個節點直接執行如下命令)
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
截圖如下:
注:執行完也可以直接進入/etc/selinux/config的文件查看是否修改完全。
2.3 修改內核配置參數 (所有節點)
1、修改/etc/sysctl.conf文件,其中的配置文件是官方配置的。
具體操作:
cat <<EOF > /etc/sysctl.conf
# kernel.shmall = _PHYS_PAGES / 2
kernel.shmall = 742216
# kernel.shmmax = kernel.shmall * PAGE_SIZE
kernel.shmmax = 3040116736
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535
kernel.sem = 500 2048000 200 4096
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 # See System Memory
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
EOF
截圖如下:
2、執行完上述操作后,執行sysctl -p 使配置生效。
具體操作:
sysctl -p
截圖如下:
2.4 配置/etc/hosts (所有節點)
1、主要是為之后 Greenplum 能夠在各個節點之間相互通信做準備。
具體操作:
vi /etc/hosts
截圖如下:
2.5 設置etc/sysconfig/network (所有節點)
1、每個節點機器的設置內容不同。
具體操作(在其他服務器上執行的話,修改hostname)
截圖如下:
注:其他節點都需要修改。
2.6 配置資源限制參數etc/security/limits.conf(所有節點)
1、具體操作:
cat <<EOF > /etc/security/limits.conf
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
EOF
截圖如下:
2.7 修改ssh的連接數(所有節點)
1、具體操作:
cat <<EOF >> /etc/ssh/sshd_config
?MaxStartups 200
?MaxSessions 200
?EOF
截圖如下:
2.8 將所有服務器重啟(所有節點)
reboot
三,GreenPlum的數據庫安裝
3.1 添加組和用戶(所有節點機器 root 用戶操作)
1、創建 gpadmin 用戶及用戶組,將其作為安裝 greenplum 的操作系統用戶。
2、如果已經存在,先刪除,
具體操作:
groupdel gpadmin
userdel gpadmin
3、創建新的用戶和用戶組
具體操作:
groupadd gpadmin
useradd -r -m -g gpadmin gpadmin
passwd gpadmin (設置密碼)
截圖如下:
3.2 集群相互之間ssh免密(所有節點機器 gpadmin 用戶操作)
1、具體操作:(操作為master節點)
su gpadmin (進入gpadmin用戶)
mkdir -p /home/gpadmin/conf(這個部分提前創建,后續會用到)
cd /home/gpadmin/
ssh-keygen -t rsa (生成密鑰對)
ssh-copy-id smdw
ssh-copy-id sdw1
ssh-copy-id sdw2
截圖如下:
?注:每個節點都需要這樣操作。
驗證如下:在gpadmin用戶下,ssh smdw 輸入后,無需密碼直接登錄到了smdw服務器。
問題整理:(如果是10002端口這個地方一定需要改)
這個地方出現一個問題,還是不能鏈接,需要ssh -p 10022 ?localhost4
是可以訪問的。
報錯截圖:
解決辦法:
修改/etc/services文件,將ssh 對應的端口改為10022。
再次驗證sss localhost4。
?
3.3 ssh權限互通設置(Master節點)
1、在/home/gpadmin/conf的路徑下生成 hostlist,seg_hosts文件:
具體操作:
cd ?/home/gpadmin/conf
vi hostlist
#文件內容
mdw
smdw
sdw1
sdw2
vi seg_hosts
#文件內容
sdw1
sdw2
截圖如下:
3.4 Greenplum集群安裝(所有節點)
1、首先是將greenplum的安裝包導入到服務器上(可以新建一個文件夾);、
2、具體操作:
su root (進入root用戶)
cd /root/gpadmin (這個安裝包的所在位置)
ls (查看安裝包,確認位置)
sudo yum install ./open-source-greenplum-db-6.19.1-rhel7-x86_64.rpm (這個是官方的安裝步驟,是不需要再去下載依賴的)
chown -R gpadmin:gpadmin /usr/local/greenplum* (安裝完之后,這個地方是將這個文件在gpadmin用戶賦予權限)
截圖如下:
后續安裝過程會有一次輸入:y (確認操作)
注:所有節點都需要安裝。
3.5 使用 gpssh-exkeys 打通所有服務器 (Master節點)
1、使用 gpssh-exkeys 將所有機器的通道打開,這樣在每臺機器之間跳轉,就不需要輸入密碼。
具體操作:
su gpadmin
cd /usr/local/greenplum-db-6.19.1/
source /usr/local/greenplum-db-6.19.1/greenplum_path.sh
cd /home/gpadmin/conf
gpssh-exkeys -f hostlist
截圖如下:
3.6 環境變量配置.bashrc和GPHOME(所有節點機器 gpadmin 用戶操作)
1、配置環境變量.bashrc
具體操作:
su gpadmin
mkdir -p /home/gpadmin/data/master (這個部分可以提前創建)
cat <<EOF >> /home/gpadmin/.bashrc
source /usr/local/greenplum-db/greenplum_path.sh
export PGPORT=5432
export PGUSER=gpadmin
export MASTER_DATA_DIRECTORY=/app/gpadmin/data/master/gpseg-1(注意:這個路徑是我本人放置數據的文件夾;大家可以自行考慮,根據服務器內存調整位置)
export PGDATABASE=gp_sydb
export LD_PRELOAD=/lib64/libz.so.1 ps
EOF
source /home/gpadmin/.bashrc
截圖如下:
2、配置環境變量GPHOME,首先進到文件中直接修改
具體操作:
vi /usr/local/greenplum-db/greenplum_path.sh
添加的路徑:GPHOME=/usr/local/greenplum-db
截圖如下:
3.7 創建數據文件夾(Master節點)
1、創建各個節點的數據文件夾,該步驟之后 hostlist 文件包含機器下都會創建 data目錄,data目錄下都會創建master、primary、mirror文件夾。
具體操作:
gpssh -f /home/gpadmin/conf/hostlist
mkdir data
cd data
mkdir master
mkdir primary
mkdir mirror
exit
截圖如下:
3.8 連通性檢查(主節點 gpadmin 用戶操作 )
1、檢查各個節點的連通性
具體操作:
gpcheckperf -f /home/gpadmin/conf/hostlist -r N -d /tmp
截圖如下:
3.9 初始化配置文件編輯修改(主節點 gpadmin 用戶操作 )
1、這里修改初始化文件,首先拷貝一個文件gpinitsystem_config,在修改。
具體操作:
mkdir /home/gpadmin/gpconfigs
cp /usr/local/greenplum/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config (這個部分是一個命令,比較長)
vim /home/gpadmin/gpinitsystem_config
這里先搜索在修改:
# ------------------------以下為配置內容------------------------
# 該項配置設置主節點數據存儲位置,括號里邊有幾個代表每臺主機創建幾個postgresql數據庫實例,即segment的實例數,上邊示例是2個。
declare -a DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary)
# 該項配置設置主節點機器名字
MASTER_HOSTNAME=mdw
# 該項配置設置主節點數據存儲位置
MASTER_DIRECTORY=/home/gpadmin/data/master
# 該項配置設置是備節點數據存儲位置,規則同DATA_DIRECTORY,括號里邊數量和DATA_DIRECTORY保持一致。
# greenplum數據分主節點和備節點,主節點掛掉時候備節點數據會啟用。
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary)
# 該項配置設置默認數據庫名字,和環境變量數據庫名字保持一致,不然會失敗。
DATABASE_NAME=gp_sydb
截圖如下:
2、在/home/gpadmin/gpconfigs新增一個配置文件hostfile_gpinitsystem
具體操作:
cd /home/gpadmin/gpconfigs
vi hostfile_gpinitsystem
#新增的內容
sdw1
sdw2
截圖如下:
3.10 初始化數據庫(主節點 gpadmin 用戶操作 )
1、初始化數據庫
具體操作:
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
備用:gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /home/gpadmin/gpconfigs/hostfile_gpinitsystem
截圖如下:
?上述應該就是安裝好了。
3.11設置遠程登錄(主節點 gpadmin 用戶操作 )
1、如需要Navicat能夠鏈接,需要配置如下:
具體操作:
echo "host all gpadmin 0.0.0.0/0 trust" >> /home/gpadmin/data/master/gpseg-1/pg_hba.conf
gpstop -u (重新加載數據庫配置)
截圖如下:
3.12 設置standby節點(主節點 gpadmin 用戶操作 )
1、standby節點根據之前的步驟,就已經完成了配置
具體操作:
gpinitstandby -s smdw
截圖如下:
2、驗證standby節點是否完成配置
在standby的服務器上,驗證相關端口是否運行
具體操作:
ps -ef|grep postgres
截圖如下:
至此,GP集群安裝完成,并設置好了standby。
四,Greenplum數據庫驗證
4.1登錄驗證(主節點 gpadmin 用戶操作 )
1、登錄驗證
具體操作:
psql -d postgres
截圖如下:
2、navicat登錄驗證
截圖如下:
3、查看集群狀態驗證,在主節點上操作命令
具體操作:
Gpstate
截圖如下:
4.2其他greenplum命令(主節點 gpadmin 用戶操作 )
1、命令如下
? 關閉gpstop
? 啟動gpstart
? 狀態查看gpstate
? help命令查看所有命令
psql -d postgres 進入psql命令行執行help
\h 查看SQL命令
? 查看psql命令
問題:安裝greenplum集群,執行gpssh-exkeys -f 報錯
環境:CentOS7.8?端口是10022?
問題分析,主要是gpssh-exkeys默認是22端口,將其中的一些命令改加上端口
問題截圖:
處理辦法:
打開gpssh-exkeys腳本,
修改一:
errfile = os.path.join(tempDir, 'sshcheck.err')
cmd = 'ssh -p 10022 -o "BatchMode=yes" -o "StrictHostKeyChecking=no" %s true 2>%s' % (hostname, errfile)
修改二:
? ? for remoteHost in GV.allHosts:
? ? ? ? ?cmd = ['ssh','-p','10022','[email protected]'+ remoteHost.host(), '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=yes', ?'true']
修改三:
cmd = ('scp -P 10022 -q -o "BatchMode yes" -o "NumberOfPasswordPrompts 0" ' + '%s %s %s %s %s:.ssh/ 2>&1' % (remoteAuthKeysFile, remoteKnownHostsFile, remoteIdentity, remoteIdentityPub, canonicalize(h.host()))) h.popen(cmd)
修改四:
for h in GV.newHosts:
? ? ? ? ? ? cmd = ('scp -P 10022 -q -o "BatchMode yes" -o "NumberOfPasswordPrompts 0" ' +
? ? ? ? ? ? ? ? ? ?'%s %s %s %s %s:.ssh/ 2>&1'
? ? ? ? ? ? ? ? ? ?% (GV.authorized_keys_fname,
? ? ? ? ? ? ? ? ? ? ? GV.known_hosts_fname,
? ? ? ? ? ? ? ? ? ? ? GV.id_rsa_fname,
? ? ? ? ? ? ? ? ? ? ? GV.id_rsa_pub_fname,
? ? ? ? ? ? ? ? ? ? ? canonicalize(h.host())))
? ? ? ? ? ? h.popen(cmd)