系統設置(所有節點)
系統參數
共享內存
網絡
用戶限制
修改或添加/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
-
在執行“gpssh-exkeys -f hostlist”配置免密碼登錄時出現“[ERROR] ssl-keygen failed:”
解決方案: 執行 unset OPENSSL_CONF ;在執行命令可以避免 - 執行“ 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