Greenplum5.6 部署

系統設置(所有節點)
系統參數
共享內存
網絡
用戶限制
修改或添加/etc/sysctl.conf ,使用sysctl -p 命令即時生效

xfs_mount_options =rw,noatime,inode64,allocsize=16m
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.ip_forward = 0
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 = 1025 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2

配置 /etc/security/limits.conf文件

  • soft nofile 65536

  • hard nofile 65536

  • soft nproc 131072

  • hard nproc 131072

設置磁盤訪問 IO調度策略
echo deadline > /sys/block/sda/queue/scheduler
echo deadline > /sys/block/fd0/queue/scheduler
echo deadline > /sys/block/hdc/queue/scheduler

設置預讀塊的值爲 16384 如果掛載硬盤 XFS文件系統 值爲65536

#/sbin/blockdev --getra /dev/sda
#/sbin/blockdev --setra 16384 /dev/sda
#/sbin/blockdev --setra 16384 /dev/sda1
#/sbin/blockdev --setra 16384 /dev/sda2
#/sbin/blockdev --setra 16384 /dev/sda3

blockdev --getra /dev/sda

blockdev --getra /dev/sda1

blockdev --getra /dev/sda2

修改/etc/hosts,添加如下內容
192.168.10.133 Mdw
192.168.10.132 Sdw

配置了這個文件之後,一定要同時修改 /etc/sysconfig/network這個文件如下(所有機器都要修改):

NETWORKING=yes
HOSTNAME=Mdw #其他的機子將 -1 改爲 -2 -3 ...

關閉防火牆
如果想開啓防火牆,就需要了解Greenplum所有端口信息即可;
#systemctl stop firewalld
#systemctl disable firewalld

sevice iptables stop #停止
chkconfig iptables off #禁用

關閉SELinux

#setenforce 0
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


-------Greenplum依賴包
sudo yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools openldap openldap-devel logrotategcc-c++ python-py curl-devel pam

#sudo yum install apr-devel libevent-devel libyaml-devel
#wget https://bootstrap.pypa.io/get-pip.py
#sudo python get-pip.py
#sudo pip install psi lockfile paramiko setuptools epydoc
#sudo pip install --upgrade setuptools
----------------------------------------------------第二種安裝依賴包方式
爲yum添加國內鏡像源
#cd /etc/yum.repos.d
#sudo wget -nc http://mirrors.aliyun.com/repo/Centos-6.repo
將阿里鏡像源設爲默認源
#sudo mv CentOS-Base.repo CentOS-Base.repo.bak
#sudo cp Centos-6.repo CentOS-Base.repo
清除yum機制的本地緩存
#sudo yum clean all
#sudo yum makecache
#sudo yum list
#sudo yum -y update

使用yum安裝依賴的系統庫
#sudo yum install curl-devel bzip2-devel python-devel openssl-devel

使用pip安裝以來的Python庫
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo pip install psi lockfile paramiko setuptools epydoc conan


安裝並使用gcc6.3作爲編譯器
自帶的gcc4.8.5編譯會報語法錯誤,所以安裝更高版本的編譯器
#sudo yum install centos-release-scl -y
#sudo yum install devtoolset-6-gcc devtoolset-6-gcc-c++
#scl enable devtoolset-6 bash
#gcc --version

添加LIB庫路徑
向/etc/ld.so.conf文件中加入下面的路徑
/usr/local/lib
/usr/local/lib64
#sudo ldconfig

安裝cmake3.8.2
GPORCA需要Cmake3.1以上才能編譯

wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz

tar xzvf cmake-3.8.2.tar.gz

cd cmake-3.8.2

./bootstrap

make

sudo make install

下載並安裝gp-xerces

cd ~

mkdir orca

cd orca

git clone https://github.com/greenplum-db/gp-xerces.git

cd gp-xerces

./configure

make

sudo make install

下載並安裝re2c

進入http://re2c.org/install/install.html下載re2c-1.0.3.tar.gz,拷貝到~/orca

tar -xvzf re2c-1.0.3.tar.gz

cd re2c-1.0.3

./configure

make

sudo make install

下載並安裝ninja

cd ~/orca

git clone https://github.com/ninja-build/ninja.git

cd ninja

./configure.py --bootstrap

下載並安裝GPORCA

下載https://github.com/greenplum-db/gporca/archive/v2.51.4.tar.gz

cd ~/orca
tar -xvzf v2.51.4.tar.gz
cd gporca-2.51.4
export PATH=~/orca/ninja:$PATH
cmake -GNinja -H. -Bbuild
sudo ninja install -C build
cd build執行ctest命令進行檢查

如果最後輸出類似如下結果:
100% tests passed, 0 tests failed out of 119
Total Test time (real) = 165.21 sec
表示成功。注意gpdb5.3.0支持的gporca版本是2.51.XXX,所以不要下載更新版本的GPORCA(例如2.53.XXX)


使用缺省的gporca優化器編譯GPDB

編譯GPDB源碼,安裝到 /home/smart/gpdb_gporca.530 目錄下
從github上下載GreenPlum最新版5.3.0的源碼:
https://github.com/greenplum-db/gpdb/archive/5.3.0.tar.gz

$ cd ~/gpdb-5.3.0/
$ ./configure --with-openssl --with-python --enable-debug --enable-depend --with-perl --with-libxml --with-gssapi --prefix=/home/smart/gpdb_gporca.530
$ make
$ make install

注意:make的過程中可能會報錯缺少bison、flex,用yum添加即可,添加完後需要重新configure再make。
./configure --with-perl --with-python --with-libxml --with-gssapi --disable-orca --prefix=/usr/local/gpdb
make
make install


-------------創建gpadmin用戶

usradd gpadmin

passwd gpadmin


--------------設置gpadmin用戶環境變量
在 /home/gpadmin/.bashrc 和 /home/gpadmin/.bash_profile文件最後添加下面數據

source /usr/local/gpdb/greenplum_path.sh

設置完畢後記得source 下立即生效;

source /home/gpadmin/.bashrc

source /home/gpadmin/.bash_profile


-----------在所有主機上初始化配置Greenplum
獲取環境參數

source /usr/local/greenplum-db/greenplum_path.sh

#echo $PATH


------------準備節點服務器信息文件
創建主機文件 all_host和 seg_host
文件內容:
Mdw
Sdw1
Sdw2


----------------建立節點服務器間的信任
以root用戶

gpssh-exkeys -f /home/gpadmin/all_host

按照提示錄入 root密碼,記住這一步不可以錄入gpadmin密碼,因爲批量安裝時需要在/usr/local下創建目錄,需要root權限;


--------------批量安裝
以root用戶

gpseginstall -f /home/gpadmin/all_host -u gpadmin -p gpadmin


--------------檢查批量安裝情況

su - gpadmin

source /usr/local/gpdb/greenplum_path.sh

#gpssh-exkeys -f /home/all_host 驗證 gpadmin 無密碼登陸

使用 gpssh 命令確認是否可以在不提示沒密碼的情況下登陸所有安裝了GP軟件的主機,使用all_host文件,該文件包含所有主機
使用 gpssh 命令時 各節點 安裝目錄用戶及用戶組都用過是 gpadmin賬戶

gpssh -f /home/gpadmin/all_host -e ls -l $GPHOME

返回結果中各節點目錄一直且不需要密碼,目錄權限都是gpadmin 安裝成功


-------------創建目錄;在各節點;

#Mdw
用 gpadmin用戶

mkdir -p /home/gpadmin/gpdata/gpmaster

#Sdw1 Sdw2

mkdir -p /home/gpadmin/gpdata/gpdatap

mkdir -p /home/gpadmin/gpdata/gpdatam


------------參數檢測;還有網絡/IO檢測;

gpcheck -f /home/gpadmin/all_host -m Mdw -s Sdw


-------------初始化Greenplum

初始配置

使用 gpadmin用戶

cp /usr/local/gpdb/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config

chmod 664 gpinitsystem_config

------設置配置文件如下

ARRAY_NAME="Greenplum"

SEG_PREFIX=gpseg

PORT_BASE=40000

declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap)

MASTER_HOSTNAME=Mdw

MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster

Port number for the master instance.

MASTER_PORT=2345

Shell utility used to connect to remote hosts.

TRUSTED_SHELL=/usr/bin/ssh

#ENCODING=UTF8

Maximum log file segments between automatic WAL checkpoints.

CHECK_POINT_SEGMENTS=8

ENCODING=UNICODE

MIRROR_PORT_BASE=50000

REPLICATION_PORT_BASE=41000

MIRROR_REPLICATION_PORT_BASE=51000

declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam)

MACHINE_LIST_FILE=/home/gpadmin/seg_host


---------執行初始化命令

gpinitsystem -c /home/gpadmin/gpinitsystem_config -h /home/gpadmin/seg_host


-----------啓動數據庫

gpstart


------------查看數據啓動狀態

gpstate -m

  1. 在執行“gpssh-exkeys -f hostlist”配置免密碼登錄時出現“[ERROR] ssl-keygen failed:”
    解決方案: 執行 unset OPENSSL_CONF ;在執行命令可以避免

  2. 執行“ gpseginstall -f /home/gpadmin/config/hostlist -u gpadmin -p li0924”結果失敗;
    分析:查看日誌信息是“tar cf greenplum-db438.tar greenplum-db438”這步出錯;很明顯是沒權限執行;前面有提示
    解決方案:用root用戶執行;或者直接手動去操作;這步驟就是把該目錄複製到各個segment節點;避免在segement再進行安裝

---------------檢查各節點開啓端口

netstat -nplt | grep grep postgres


--------------設置環境變量
你必須在Greenplum數據庫主站(和備用主站)上配置環境。您的$ GPHOME目錄中提供了一個greenplum_path.sh文件,其中包含了Greenplum數據庫的環境變量設置。您可以在gpadmin用戶的啓動shell配置文件(如.bashrc)中爲此文件提供源。

Greenplum數據庫管理實用程序還要求設置MASTER_DATA_DIRECTORY環境變量,這應該指向由gpinitsystem程序在主數據目錄位置創建的目錄。

source /usr/local/gpdb/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/master/gpseg-1
可選 客戶端會話環境變量
export PGPORT=2345
export PGUSER=gpadmin
export PGDATABASE=gptest
使其生效並拷貝到 備主機
$ source ~/.bashrc
$ scp ~/.bashrc Sdw:~/.bashrc


-------------操作數據庫
#訪問數據庫
$ psql --help

#列出所有數據庫
$ psql -l

--可以看到當前有4個數據庫,下面演示在本地登錄postgres數據庫,登錄本地數據庫可以不指定-h參數,如果端口使用默認的5432,也不需要指定-p參數,默認使用gpadmin管理員用戶登錄數據庫,如果使用gpadmin用戶登錄,也可以不指定-U參數。
$ psql -d postgres

help

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章