目前安裝的是最新版本的greenplum 5.4.0苛骨。這個版本是基于PostgreSQL 8.3.23 (Greenplum Database 5.4.0 build commit:1971b301f52979ac74fb3d0a141bbaae06b70857) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 6.2.0, 64-bit compiled on Jan
12 2018 21:15:36
經(jīng)驗證這個版本支持json 不支持jsonb。默認(rèn)端口是-p 2345
安裝基本流程
創(chuàng)建容器
docker run --name gp_master --privileged -p 2345:2345 -it centos /bin/bash
docker run --name gp_db1 --privileged -p 2346:2345 -it centos /bin/bash
docker run --name gp_db2 --privileged -p 2347:2345 -it centos /bin/bash
進(jìn)入容器留拾,在每一個容器做如下配置
yum install -y net-tools which openssh-clients openssh-server less zip unzip iproute.x86_64
docker中默認(rèn)沒有啟動ssh,為了方便各節(jié)點之間的互連卤材,啟動docker的每個節(jié)點里面的ssh震桶,并創(chuàng)建相關(guān)的認(rèn)證key
- ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
- ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
- ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
- /usr/sbin/sshd
- 配置主機(jī)域名映射關(guān)系
vi /etc/hosts
172.17.0.11 187ad7900973
172.17.0.12 f41764ccbedc
172.17.0.22 dw-greenplum-1 mdw
172.17.0.24 dw-greenplum-2 sdw1
- 修改所有節(jié)點里面的 /etc/sysconfig/network 文件,保持主機(jī)名一致
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mdw
- 創(chuàng)建greenplum的用戶和用戶組
在每個節(jié)點中創(chuàng)建greenplum的用戶和用戶組搭儒,方便安裝greenplum集群。另
- 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
- 修改每個節(jié)點上的文件打開數(shù)量限制
vi /etc/security/limits.conf
End of file
- soft nofile 65536
- hard nofile 65536
- soft nproc 131072
- hard nproc 131072
- 關(guān)閉每個節(jié)點上的防火墻提茁,關(guān)閉selinux(目前沒有發(fā)現(xiàn)防火墻的配置淹禾,此處沒有處理)
- vi /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
在master節(jié)點上安裝greenplum, 以下過程只需要在master節(jié)點處理
- mkdir gpfoler
chown -R gpadmin:gpadmin gpfoler - 復(fù)制greenplum-db-5.4.0-rhel7-x86_64.zip到gpfolder
- chown -R gpadmin:gpadmin greenplum-db-5.4.0-rhel7-x86_64.zip
- 切換到gpadmin賬號
- su - gpadmin
- 解壓下載后的zip文件
cd /gpfoler
unzip greenplum-db-5.4.0-rhel7-x86_64.zip - 賦予文件執(zhí)行權(quán)限
chmod +x greenplum-db-5.4.0-rhel7-x86_64.bin - 執(zhí)行安裝文件
./greenplum-db-5.4.0-rhel7-x86_64.bin
yes --> /home/gpadmin/greenplum-db-5.4.0--> yes -->yes
安裝期間需要修改默認(rèn)安裝目錄,輸入/home/gpadmin/greenplum-db-5.4.0 - 為了方便安裝集群茴扁,greenplum提供了批量操作的指令铃岔,通過創(chuàng)建配置文件,以使用批處理命令峭火, 以下的當(dāng)前路徑是/home/gpadmin
note: 在gpadmin下可能不能創(chuàng)建這兩個文件毁习,需要切換到root創(chuàng)建
exit --切換到root賬戶下
cd /home/gpadmin/
mkdir conf
cd conf
touch hostlist
vi hostlist
touch seg_hosts
vi seg_hosts
chown -R gpadmin:gpadmin /home/gpadmin/conf
[gpadmin@mdw ~]$ cat ./conf/hostlist
mdw
sdw1
sdw2
[gpadmin@mdw ~]$ cat ./conf/seg_hosts
sdw1
sdw2
- 設(shè)置環(huán)境變量,打通所有節(jié)點
greenplum-db/greenplum_path.sh中保存了運行g(shù)reenplum的一些環(huán)境變量設(shè)置卖丸,包括GPHOOME纺且、PYTHONHOME等設(shè)置,在gpadmin賬號下設(shè)置環(huán)境變量生效稍浆,然后打通所有節(jié)點
[gpadmin@mdw ~]$ source /home/gpadmin/greenplum-db/greenplum_path.sh
[gpadmin@mdw ~]$ gpssh-exkeys -f /home/gpadmin/conf/hostlist -- 中間會插入一個密碼123456
[STEP 1 of 5] create local ID and authorize on local host
... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped
[STEP 2 of 5] keyscan all hosts and update known_hosts file
[STEP 3 of 5] authorize current user on 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
成功打通载碌,后面就可以使用以下命令開啟批量操作
注意:使用gpssh-exkeys命令時一定要使用gpadmin身份猜嘱,因為會在/home/gpadmin/.ssh中生成ssh的免密碼登錄秘鑰,如果使用了其它賬號登錄嫁艇,則會生成密鑰在其它賬號下朗伶,后面在gpadmin賬號下就無法使用gpssh的批處理命令
使用gpssh的批處理命令
[gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist
Note: command history unsupported on this machine ...
=> pwd
[sdw] /home/gpadmin
[ mdw] /home/gpadmin
=> exit
這里pwd命令是linux中的查看路徑命令,在這里也是查看批量操作時所在的路徑步咪,從中可以看到已經(jīng)成功連通了三個節(jié)點打包master節(jié)點上的安裝包
tar -cf gp.5.4.tar /home/gpadmin/ -- 在/home/pgadmin/gp.5.4.tar出現(xiàn)
使用gpscp命令將這個文件復(fù)制到每一臺機(jī)器上
gpscp -f /home/gpadmin/conf/hostlist gp.5.4.tar =:/home/gpadmin/ --可以看到其他的兩個節(jié)點有/home/pgadmin/gp.5.4.tar
批量解壓腕让,并建立軟鏈接
cd /home/gpadmin/conf
[gpadmin@mdw conf]$ gpssh -f hostlist
=> cd /home/gpadmin
[sdw]
[mdw]
=> tar -xf gp.5.4.tar
[sdw]
[mdw]
=> ln -s ./greenplum-db-5.4.0 greenplum-db
[sdw]
[mdw]初始化安裝數(shù)據(jù)庫
- 批量創(chuàng)建數(shù)據(jù)目錄 結(jié)果是/home/gpadmin/gpdata
[gpadmin@mdw conf]$ gpssh -f hostlist
=> mkdir gpdata
[ mdw]
[sdw2]
[sdw1]
=> cd gpdata
[ mdw]
[sdw2]
[sdw1]
=> mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2
[ mdw]
[sdw2]
[sdw1]
=> exit
在每個節(jié)點上配置.bash_profile環(huán)境變量 對于這一步,查看數(shù)據(jù)節(jié)點的greenplum_path.sh的確切位置 使用 su - gpadmin
[gpadmin@mdw ~]$ cd
[gpadmin@mdw ~]$ cat .bash_profile
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fiUser specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
source /home/gpadmin/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=2345
export PGDATABASE=postgres
[gpadmin@mdw ~]$ source .bash_profile
在主節(jié)點上初始化配置文件
ARRAY_NAME="Greenplum"
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
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=2345
TRUSTED_SHELL=/usr/bin/ssh
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)
- chown -R gpadmin:gpadmin /home/gpadmin/conf/gpinitsystem_config
[gpadmin@mdw ~]$ cat /home/gpadmin/conf/gpinitsystem_config
ARRAY_NAME="Greenplum"
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
Segment 的名稱前綴
SEG_PREFIX=gpseg
Primary Segment 起始的端口號
PORT_BASE=33000
指定 Primary Segment 的數(shù)據(jù)目錄
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)
Master 所在機(jī)器的 Hostname
MASTER_HOSTNAME=mdw
指定 Master 的數(shù)據(jù)目錄
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
Master 的端口
MASTER_PORT=2345
指定Bash的版本
TRUSTED_SHELL=/usr/bin/ssh
Mirror Segment起始的端口號
MIRROR_PORT_BASE=43000
Primary Segment 主備同步的起始端口號
REPLICATION_PORT_BASE=34000
Mirror Segment 主備同步的起始端口號
MIRROR_REPLICATION_PORT_BASE=44000
Mirror Segment 的數(shù)據(jù)目錄
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)
在主節(jié)點初始化數(shù)據(jù)庫
gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config
如果gpinitsystem不能成功歧斟,就在master節(jié)點的/home/gpadmin/gpAdminLogs/的gpinitsystem_*.log文件中查看日志信息,找出原因進(jìn)行修改偏形,然后再重新執(zhí)行g(shù)pinitsystem進(jìn)行初始化安裝静袖。
出現(xiàn)如下問題:ping: socket: Operation not permitted
命令行執(zhí)行 su - gpadmin
setcap cap_net_raw=ep $(which ping)
安裝完成后使用 su - gpadmin
psql