環境:centos7 ,Greenplum6
1. Greenplum 6.4 下載
https://github.com/greenplum-db/gpdb/releases/tag/6.4.0
2. 安裝單機master環境準備
2.1 關閉SELINUX
[root@master ~]# vim /etc/selinux/config
2.2關閉防火牆
[root@master ~]# systemctl status firewalld.service(查看防火牆服務狀態)
Active屬性:dead爲防火牆已關閉,run爲防火牆正在運行
[root@master ~]# systemctl stop firewalld.service
[root@master ~]# systemctl disable firewalld.service (禁用服務後就無法再使用stop firewalled.service了,下圖主機名換成了segment1)
2.4改機器名
#查機器名
[root@master ~]# hostname
#改名爲master
[root@master ~]# hostnamectl set-hostname master
2.5創建gpaadmin用戶和用戶組
[root@master ~]# groupadd -g 3030 gpadmin
[root@master ~]# useradd -u 3030 gpadmin -g gpadmin -d /home/gpdata
[root@master ~]# passwd gpadmin
(密碼gpadmin123)
#補充知識點:刪除 groupdel gpadmin userdel gpadmin
vim /etc/passwd可查看用戶及所屬組,工作目錄
2.6配置內核參數
[root@master ~]# vim /etc/sysctl.conf
以下面內容覆蓋原有內容:
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.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 = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
sysctl -p使配置生效
2.7 vim /etc/security/limits.conf
以下面內容覆蓋:
*soft nofile 65536
*hard nofile 65536
*soft nproc 131072
*hard nproc 131072
2.8CentOS7需要加入服務logind
[root@master ~]# echo "RemoveIPC=no" >> /etc/systemd/logind.conf
[root@master ~]# service systemd-logind restart
2.9設置hosts文件
[root@master ~]# vim /etc/hosts
添加:172.16.250.106 master
172.16.250.106 這裏更改成你自己的ip地址
2.10設置network
[root@master ~]# vim /etc/sysconfig/network
添加:
networking=yes
hostname=master (不區分大小寫)
2.11重啓服務器reboot
[root@master ~]# reboot
3.安裝GreenPlum
3.1 gp6安裝包上傳到root目錄
cd /進入根目錄
rz命令上傳文件參考:https://blog.csdn.net/lx_frolf/article/details/82770546
yum -y install greenplum-db-6.1.0-rhel6-x86_64.rpm
#默認安裝到/usr/local,授權給gpadmin
chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*
使環境變量生效
source /usr/local/greenplum-db/greenplum_path.sh
3.2創建instance需要的目錄
mkdir -p /home/gpdata
mkdir -p /home/gpdata/master
mkdir -p /home/gpdata/gp1
mkdir -p /home/gpdata/gp2
mkdir -p /home/gpdata/gp3
mkdir -p /home/gpdata/gp4
#修改目錄屬主
chown -R gpadmin:gpadmin /home/gpdata
chown -R gpadmin:gpadmin /home/gpdata/master
chown -R gpadmin:gpadmin /home/gpdata/gp*
3.3切換用戶gpadmin
su gpadmin
進入$開頭的bash環境
cd
改變前綴的方法:
vim bash_profile
文件末尾追加:
export PS1='[\u@\h \w]',
退出文件並 source bash_profile 使其生效
3.4 /home/gpadmin/.bash_profile文件添加以下內容:
source /usr/local/greenplum-db-6.4.0/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpdata/master/gpseg-1
export PGPORT=2345
export PGUSER=gpadmin
export PGDATABASE=gpdb
3.5 /home/gpadmin/.bashrc文件添加同3.4的內容
添加上文3.4同樣內容
3.6設置子節點的host
vim all_hosts_file
添加一行master(單機版只有一個host)
3.7 權限互通
[gpadmin@master ~]# gpssh-exkeys -f all_hosts_file
3.8 編輯gp初始化文件
vim initgp_config
寫入:
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpdata/gp1 /home/gpdata/gp2 /home/gpdata/gp3 /home/gpdata/gp4)
MASTER_HOSTNAME=master
MASTER_PORT=2345
MASTER_DIRECTORY=/home/gpdata/master
DATABASE_NAME=gpdb
3.9設置節點服務器
vim seg_hosts_file
寫入:
master
本例單機,只有master這一臺
4.初始化GP
gpinitsystem -c initgp_config -h seg_hosts_file
初始化失敗:
原因:阿里雲的服務器初始化沒有設置分配swap空間,分配好swap空間即可
分配swap詳情參考:https://www.cnblogs.com/zdz8207/p/linux-centos-swap.html
5.連接GP
5.1psql登錄修改密碼
su gpadmin
psql -p 2345
修改數據庫密碼
alter role gpadmin with password 'bigdata2018';
退出: \q
5.2遠程連接配置
vim /home/gpdata/master/gpseg-1/postgresql.conf
修改:
#listen_addresses = '*',去#註釋
vim /home/gpdata/master/gpseg-1/pg_hba.conf
添加:
host all gpadmin 0.0.0.0/0 md5
5.3重新加載配置文件
gpstop -u
附錄
其他啓停命令
gpstart #正常啓動
gpstop #正常關閉
gpstop -M fast #快速關閉
gpstop –r #重啓
安裝master後添加segment節點
1.更改segment系統配置
1.1更改機器名爲segment
參考前文
1.2修改/etc/hosts文件(在master上以root權限更改,再用scp命令複製到segment節點)
[root@master ~]# scp /etc/hosts segment1:/etc
1.3關閉selinux及防火牆
參考前文
selinux文件可用scp命令由master複製到segment節點
[root@master ~]# scp /etc/selinux/config segment1:/etc/selinux
1.4修改/etc/sysconfig/network文件(進入每臺segment中修改)
1.5複製master的/etc/sysctl.conf文件到segment
[root@master ~] scp /etc/sysctl.conf segment:/etc/sysconfig
並sysctl -p執行
1.6修改/etc/security/limits.d/20-nproc.conf文件並複製到segment
[root@master ~] vim /etc/security/limits.d/20-nproc.conf
1.7複製/etc/security/limits.conf到segment節點
[root@master ~] scp /etc/security/limits.conf segment1:/etc/security/
1.8創建gpadmin組及用戶
[root@master ~]# groupadd -g 1001 gpadmin
[root@master ~]# useradd -g admin -u 1001 gpadmin -d /home/gpadmin -s /bin/bash gpadmin
[root@master ~]# passwd admin
1.9配置擴展segment節點需要的文件
1.9.1修改master主機gpadmin目錄下的all_hosts_file
將所有節點的主機名都加進去
1.9.2修改master主機gpadmin目錄下的seg_hosts_file
將segment節點的主機名加進去
1.9.3新增hosts_expand文件
將當前需要新增的節點主機名加入(如此次需要加入segment1,就將segment1寫入)
gpadmin目錄下的文件如下圖:
1.9.4在segment節點增加和master路徑一致的存放數據的目錄
[gpadmin@segment ~]# mkdir /home/gpdata
[gpadmin@segment ~]# mkdir /home/gpdata/master
[gpadmin@segment ~]# mkdir /home/gpdata/gp1
[gpadmin@segment ~]# mkdir /home/gpdata/gp2
[gpadmin@segment ~]# mkdir /home/gpdata/gp3
[gpadmin@segment ~]# mkdir /home/gpdata/gp4
2.配置SSH免密登錄
2.1master主機生成密鑰ssh-keygen -t rsa -P ''
[gpadmin@master ~]# ssh-keygen -t rsa -P ''
id_rsa爲私鑰,id_rsa.pub爲公鑰
2.2將公鑰複製到segment的 ~/.ssh/authorized_keys文件(.ssh目錄及authorized_keys可能要提前創建)
[gpadmin@master ~]# scp ~/.ssh/id_rsa.pub segment1:~/.ssh/authorized_keys
2.3設置目錄權限
1) .ssh目錄的權限必須是700(非常重要)
[root@segment1 gpadmin]# chmod 700 .ssh
2) .ssh/authorized_keys文件權限必須是600
[root@segment1 .ssh]# chmod 600 authorized_keys
2.4測試節點之間是否連通
[gpadmin@master ~]# gpssh-exkeys -f all_hosts_file
最後出現completed successfully即證明節點之間已連通
3.在segment安裝GP
3.1在master上將默認安裝在/usr/local的greenplum-db-x.x.x壓縮打包(需要將/usr/local的讀權限給到gpadmin,否則會報錯)
master上未授權時壓縮文件失敗:
[root@master ~]# chmod -R gpadmin:gpadmin /usr/local
[gpadmin@master ~]# tar -cf gp.tar /usr/local/greenplum-db-6.4.0/
文件壓縮成功:
3.2將壓縮包複製到segment節點(需要將/usr/local的讀權限給到gpadmin,否則會報錯)
segment1上未授權時複製失敗:
[root@segment1 ~]# chown -R gpadmin:gpadmin /usr/local
[gpadmin@master ~]# scp /usr/local/gp.tar segment1:/usr/local/
文件複製成功:
3.3解壓文件
[root@segment1 local]# tar -xf gp.tar
3.4建立軟連接
[gpadmin@segment1 local]# ln -s greenplum-db-6.4.0 greenplum-db
4.環境配置
4.1複製/home/gpadmin/.bash_profile到segment
[gpadmin@master ~]# scp /home/gpadmin/.bash_profile segment:/home/gpadmin/
4.2使環境變量生效
[gpadmin@segment1 ~]# source .bash_profile
4.3複製/home/gpadmin/.bashrc到segment
5.使用gpexpand函數增加segment節點
5.1gpexpand -f hosts_gpexpand
中間需要確認一次,並且輸入數據存放的路徑
成功會顯示已生成gpexpand_inoutfile開頭的文件
5.2修改gpexpand_inputfile(只保留前面4行)
剩下的都可刪掉,否則gpexpand -i 命令會失敗,報錯如下
5.3gpexpand -i 腳本文件
[gpadmin@segment1 ~]pexpand -i gpexpand_inputfile_20200417_001320
(出現Initialization of the system expansion complete即增加節點成功)
5.4刪除增加節點生成的schema
(不刪除以後則無法增加節點)
[gpadmin@segment1 ~]pexpand -c
5.5重分佈表
[gpadmin@segment1 ~]$ gpexpand -d 60:00:00
(出現completed successfully即重分佈成功)
5.6失敗回滾
[gpadmin@master ~]$ gpexpand -r
5.7進入GP查詢節點信息
=# select * from gp_segment_configuration