Greenplum是Pivotal公司開源的一款大規模並行處理(MPP)數據庫,其架構是專門針對大型分析性數據倉庫和商業智能工做負載設計。本質上講,它是多個 PostgreSQL 實例一塊兒充當一個數據庫管理系統。linux
全部節點進行配置linux的部署環境,本文使用系統是centos6.5。對於節點數的選擇,通常來講,業務量不是很大的狀況下,選擇3~5個計算節點較爲合適,並且,每一個計算節點不在同一臺物理機中,同時master和standby不在同一臺物理機中。儘可能將每一個節點分散出去,避免由於宿主機宕機致使整個集羣不可用。greenplum集羣能夠同時容許一個計算節點和一個master節點宕機還能正常工做(前提是配置了mirror機制和standby備用master)。shell
修改系統hosts文件,vim /etc/hosts,實際中能夠參考以下配置,實際的IP按照申請虛擬機的IP來設置。注意,以前安裝時候,OpenStack建立的機器登陸IP和網卡IP不一致,須要配置成網卡IP。主機名要與實際中的一致,此處的master、datan和standby只做爲舉例使用。
數據庫
10.10.10.10 master 10.10.10.11 data1 10.10.10.12 data2 10.10.10.13 data3 10.10.10.14 data4 10.10.10.15 standby
爲了簡化配置,建議將各個服務器root密碼配置成相同的。通常的配置方法以下:vim
ssh-keygen -t rsa #使用root用戶運行,四個回車OK ssh-copy-id ip1 #會提示輸入密碼,ip1是須要ssh免密碼登陸的機器IP ssh ip1 #驗證是否成功
注意,配置集羣的互信是雙向的,所以須要在每一臺機器上運行上述命令。
若是機器衆多的話,也能夠用下面腳本的方法來配置。centos
安裝expect
yum install expect -ybash
生成祕鑰
ssh-keygen服務器
運行下面的腳本cookie
#!/bin/bash SERVERS="master data1 data2 data3 data4 standby" PASSWORD=gpadmin #配置每一臺的主機root密碼爲相同的 auto_ssh_copy_id() { expect -c "set timeout -1; spawn ssh-copy-id $1; expect { *(yes/no)* {send -- yes\r;exp_continue;} *assword:* {send -- $2\r;exp_continue;} eof {exit 0;} }"; } ssh_copy_id_to_all() { for SERVER in $SERVERS do auto_ssh_copy_id $SERVER $PASSWORD done } ssh_copy_id_to_all
注意,該腳本也須要在每一臺主機上運行一次。網絡
爲每一臺主機增長gpadmin用戶和相關組,並設置用戶密碼,下面的mypassword根據實際狀況進行改變。架構
groupadd -g 530 gpadmin useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin chown -R gpadmin.gpadmin /home/gpadmin echo "mypassword" | passwd --stdin gpadmin
爲了不沒必要要的安裝問題,建議關閉selinux和iptables。
查看當前selinux配置,若是不是disable則須要進行關閉。
[xxxx@xxxx ~]$ sestatus SELinux status: disabled
查看iptables的狀態
/etc/init.d/iptables status
若是爲打開的,建議直接關閉,並關閉開機啓動
service iptables stop chkconfig iptables off
系統內核參數在sysctl.conf中,可使用vim 編輯器打開/etc/sysctl.conf
kernel.shmmax=34359738368 kernel.shmall=8388608 kernel.shmmni = 4096 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 vm.overcommit_ratio=95
配置完後使用sysctl -p使配置生效,若是出現了問題,請查看參數是否存在。
可使用以下命令來配置參數
vim /etc/security/limit.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072
注意:對於RedHat6.x系統,還須要將/etc/security/limits.d/90-nproc.conf文件中 的1024修改成131072。
官方建議使用xfs分區,在沒有特殊需求的狀況下ext三、ext4也是沒有問題的。
默認爲cfq,更改成deadline,因爲數據庫安裝的盤設備名是sdb,所以只須要將設備名更改成sdb便可。
查看調度器規則
cat /sys/block/sdb/queue/scheduler
更改
echo deadline > /sys/block/sdb/queue/scheduler
查看
cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never
更改成never
echo never > /sys/kernel/mm/transparent_hugepage/defrag
df -T查看有哪些磁盤
將相關的數據盤進行調整:
blockdev --setra 65536 /dev/sda blockdev --setra 65536 /dev/sdb
因爲集羣的同步依賴於時間,所以集羣的各臺主機的時間要一致。
ntpdate cn.pool.ntp.org
能夠直接從官網下載 https://network.pivotal.io/products/pivotal-gpdb#/releases/1624 ,版本能夠根據須要選擇,若是沒有帳號須要註冊一個帳號。
master上進行安裝,直接運行二進制文件,二進制的文件是上一步從官網下載的。
./greenplum-db-4.3.8.0-build-1-RHEL5-x86_64.bin
安裝的過程是交互,須要用戶補充相關的安裝信息,大體過程能夠按照如下來進行。
******************************************************************************** Do you accept the Pivotal Database license agreement? [yes|no] ******************************************************************************** yes ******************************************************************************** Provide the installation path for Greenplum Database or press ENTER to accept the default installation path: /usr/local/greenplum-db-4.3.8.0 ******************************************************************************** [ENTER] ******************************************************************************** Install Greenplum Database into </usr/local/greenplum-db-4.3.8.0>? [yes|no] ******************************************************************************** yes ******************************************************************************** /usr/local/greenplum-db-4.3.8.0 does not exist. Create /usr/local/greenplum-db-4.3.8.0 ? [yes|no] (Selecting no will exit the installer) ******************************************************************************** yes Extracting product to /usr/local/greenplum-db-4.3.8.0 ******************************************************************************** Installation complete. Greenplum Database is installed in /usr/local/greenplum-db-4.3.8.0 Pivotal Greenplum documentation is available for download at http://docs.gopivotal.com/gpdb ********************************************************************************
將greenplum的安裝路徑給gpadmin訪問權限
chown -R gpadmin.gpadmin /usr/local/ chown -R gpadmin.gpadmin /usr/local/greenplum-db
這裏分爲兩個文件,是一個是集羣全部的hosts,一個是計算節點(data)的hosts。這兩個文件不存在,須要用戶手動建立出來,建立的方法以下:
su - gpadmin mkdir -p /usr/local/greenplum-db/conf
建立集羣host_file
注意,host_file 和seg_file裏面須要填上主機名,不要填如下名稱。
vim /usr/local/greenplum-db/conf/host_file master data1 data2 data3 data4 standby
建立計算節點seg_hosts
vim /usr/local/greenplum-db/conf/seg_hosts data1 data2 data3 data4
這一步在其餘節點上安裝greenplum
root用戶
source /usr/local/greenplum-db/greenplum_path.sh gpseginstall -f /usr/local/greenplum-db/conf/host_file -u gpadmin -p gpadmin
vim /home/gpadmin/.bash_profile
source /usr/local/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/data1/gpdata/gpmaster/gpseg-1 export GPPORT=5432 export PGDATABASE=postgres
這一步建立數據庫的數據庫文件存放目錄,這裏的gpdatap1,gpdatap2,gpdatam1,gpdatam2是一個主機上的兩個主節點和兩個鏡像節點的數據庫文件目錄。這個目錄的結構根據實際狀況進行調整,可是建議不要在一臺主機上安裝過多的pg實例,不然數據同步時候,會大量佔用系統網絡資源,致使節點down掉。
本文掛載的1T數據盤在/data1下。
gpssh -f /usr/local/greenplum-db/conf/host_file -e -v "mkdir -p /data1/gpdata/{gpmaster,gpdatap1,gpdatap2,gpdatam1,gpdatam2}"
配置文件模板在/usr/local/greenplum-db/docs/cli_help/gpconfigs裏面,此模板中的mirror segment被註釋掉了,在實際使用的時候須要反註釋,而後進行配置,建議拷貝一份出來重命名。
cd /usr/local/greenplum-db/docs/cli_help/gpconfigs cp gpinitsystem_config initgp_config
修改initgp_config配置文件。
ARRAY_NAME="EMC Greenplum DW" MACHINE_LIST_FILE=/usr/local/greenplum-db/conf/seg_hosts SEG_PREFIX=gpseg PORT_BASE=40000 declare -a DATA_DIRECTORY=(/data1/gpdata/gpdatap1 /data1/gpdata/gpdatap2) MASTER_HOSTNAME=master MASTER_DIRECTORY=/data1/gpdata/gpmaster MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE MIRROR_PORT_BASE=50000 REPLICATION_PORT_BASE=41000 MIRROR_REPLICATION_PORT_BASE=51000 declare -a MIRROR_DATA_DIRECTORY=(/data1/gpdata/gpdatam1 /data1/gpdata/gpdatam2)
初始化命令 -S 表示使用Spread Mirror 分配 mirror節點,防止一個節點掛掉,另一個節點集中成爲瓶頸!-s 表示 standby master
gpinitsystem -c initgp_config -S -s standby
等待初始化成功後,執行gpstate來查看各節點狀態。
pg_hba.conf是控制數據庫訪問的文件
vim $MASTER_DATA_DIRECTORY/pg_hba.conf host all gpadmin 0.0.0.0/0 md5
執行gpstop -u
使配置生效
至此。集羣安裝成功。
操做 | 命令 |
---|---|
啓動 | gpstart -a |
中止 | gpstop -a |
快速中止 | gpstop -M fast |
配置重載,可是隻適用於部分參數 | gpstop -u |
查看mirror的狀態 | gpstate -e |
查看standby master的狀態 | gpstate -f |
查看整個GP羣集的狀態 | gpstate -s |
查看GP的版本 | gpstate -i |
幫助文檔,能夠查看gpstat更多用法 | gpstate --help |