Greenplum 安装方法

来源:互联网 发布:剑三脸型非法数据 编辑:程序博客网 时间:2024/06/03 09:51

1.  下载文件  greenplum-db-4.3.10.0-build-1-rhel5-x86_64.bin

2.  执行命令 ./greenplum-db-4.3.10.0-build-1-rhel5-x86_64.bin 查看/usr/local目录下必须有greenplum_db目录

3. 编辑   gpinitsystem_config   installgpdb.sh

    

gpinitsystem_config

ARRAY_NAME="Bruce Greenplum DW"SEG_PREFIX=bruce_segPORT_BASE=40000MASTER_PORT=15432TRUSTED_SHELL=sshCHECK_POINT_SEGMENTS=64ENCODING=UNICODEMASTER_MAX_CONNECT=150MASTER_HOSTNAME=brucevmMASTER_DIRECTORY=/data2/gpdb0217//GreenPlum//db/gpmasterdeclare -a DATA_DIRECTORY=( /data2/gpdb0217//GreenPlum//db/gpsegdata /data2/gpdb0217//GreenPlum//db/gpsegdata /data2/gpdb0217//GreenPlum//db/gpsegdata)DATABASE_NAME=brucedb 
 

 createdb.sql

CREATE ROLE bruce WITH LOGIN ENCRYPTED PASSWORD '11111111' SUPERUSER INHERIT CREATEDB CREATEROLE RESOURCE QUEUE pg_default;CREATE SCHEMA bruce;ALTER ROLE bruce SET SEARCH_PATH TO bruce,public,pg_catalog;--CREATE DATABASE brucedb WITH OWNER = bruce ENCODING = 'UTF8' TABLESPACE = pg_default CONNECTION LIMIT = -1;ALTER DATABASE brucedb OWNER TO bruce;ALTER DATABASE brucedb WITH CONNECTION LIMIT -1;ALTER DATABASE brucedb SET search_path TO bruce,public, pg_catalog; 


 installgpdb.sh

 #!/bin/bash  # os type  #set -x   script_path=$(dirname $0);  export script_abs_path=$(cd ${script_path}/; pwd);  MAX_SEGMENT_NUM=30 #max segment in this hosts  HIGH_CONCURRENCY=1 # 1 means many user access gp; 0 means 1 or 2 user access gp  echo "work dir:" ${script_abs_path}      SYSTEM_SHAREBUFFER_MEM_PERCENT=0.6  SYSTEM_WORKBUFFER_MEM_PERCENT=0.2      CheckExistsGPProcess(){      PORTCHECK=$(lsof -i:15432 |wc -l)      if (("$PORTCHECK" > 0)); then          echo "tcpip port 15432 is in used, please release it !!!"          exit 2      fi      PROCESSCHECK=$(ps -ef|grep  postgres |grep  -v grep |wc -l)       if (("$PROCESSCHECK" > 0)); then         echo "greenplum or postgresql is running, please stop it!!!"         exit 3      fi     rm /tmp/.s.PGSQL.15432*    -f }        CheckDBAUser(){      # ---------------------------------------------------      # create user      # ---------------------------------------------------      echo "Begin Init User Info: "${dba_user}      if [[ $(cat /etc/group|grep -c ${dba_group}) -lt 1 ]]; then          groupadd $dba_group      fi        if [[ $(id -nu $dba_user) = $dba_user ]]; then          echo "user '$dba_user' already exists,need  delete this user, first backup /home/$dba_user,then execute command: "          echo " userdel  -r  -f  $dba_user"                exit 1          #usermod -g $dba_group -G $dba_group $dba_user          #id -a $dba_user      else          echo "to add user '$dba_user'"          useradd -g $dba_group -G $dba_group -m -d /home/$dba_user $dba_user      fi      echo "$dba_user:$dba_user"|chpasswd      echo "Sunccess Init User Info: "${dba_user}     }   CheckHardWare(){      echo "Begin Check HardWare Info"      #CPU_CORE=$(cat /proc/cpuinfo | grep processor | uniq | wc -l)      CPU_COREEACH=$(cat /proc/cpuinfo| grep "cpu cores"| uniq| awk '{print $4}')      CPU_NUM=$(cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l )      if [[ $CPU_NUM -eq 0 ]]; then          CPU_NUM=1      fi      CPU_CORE=$(( ${CPU_COREEACH:=1} * $CPU_NUM ))      MEMORY=$(free -m |grep "Mem" | awk '{print $2}')        mkdir -p  $install_dir      HDLine=$(df -hl $install_dir | wc -l|bc)        if [[ $HDLine -eq 3 ]]; then          echo "HDLine = 3"          HD=$(df -hl $install_dir | grep '%' | tail -n 1 | awk '{print $3}')        elif [[ $HDLine -eq 2 ]]; then          echo "HDLine = 2"          HD=$(df -hl $install_dir | grep '%' | tail -n 1 | awk '{print $4}')        fi        SWAP=$(cat /proc/meminfo | grep SwapTotal | sed -r "s#\s+# #" |cut -d" " -f2 | bc)        echo ""      echo "*******************************"      echo "********* system info *********"      echo "*******************************"      echo "Physical CPU core number: $CPU_CORE"      echo "System memory size: $MEMORY MB"      echo "free space of $install_dir: " $HD      echo "swap size: $SWAP KB"      echo "*******************************"        UNIT=$(echo ${HD:0-1:1})      if [ "$UNIT" = "G" ]; then          FREE_DISK=$(echo ${HD%G*} | bc)          if [ $(echo "$FREE_DISK < 3"|bc) -eq 1 ]          then              echo "error! free disk is too small, it must >= 5G"              sys_check=3;          fi      elif [ "$UNIT" = "M" ]; then          echo "error! free DISK is too small, it must >= 5G"          sys_check=3;      fi        if (($SWAP < 1000000)); then          echo "error! Swap size is too small to install sybase iq, it must >= 1G!"          sys_check=4;      elif (($SWAP < 8000000)); then          echo "warning!Swap size is too small to running bruce, it need >= 16G";      fi        if ((sys_check > 0)); then          exit $sys_check      fi        if (($CPU_CORE < 4)); then          echo "warning!number of cpu core is too little to running bruce, it need >= 4"      fi        if (($MEMORY < 8000)); then          echo "warning!memory size is too small to running bruce, it need >= 8G"      fi            SetmentNum=$(echo $CPU_CORE/2+1|bc)      if (($HIGH_CONCURRENCY < 1)); then          SetmentNum=$(echo $CPU_CORE|bc)      fi                    if (($SetmentNum > $MAX_SEGMENT_NUM)); then          SetmentNum=$MAX_SEGMENT_NUM      fi        SYSTEMSHMMEM=$(echo $MEMORY*$SYSTEM_SHAREBUFFER_MEM_PERCENT*100/100|bc)      SYSTEMWORKMEM=$(echo $MEMORY* 0.2 *100/100|bc)                  KERNEL_SHMMAX=$(echo $SYSTEMSHMMEM*1024*1024|bc)      KERNEL_SHMALL=$(echo $KERNEL_SHMMAX/4096|bc)         Temp_SegmentNumber=$(echo $SetmentNum + 2|bc)      Master_ShareBufferPercent=$(echo 200/$Temp_SegmentNumber|bc)         ALLSetment_ShareBufferPercent=$(echo $SetmentNum*100/$Temp_SegmentNumber|bc)      SingleSetment_ShareBufferPercent=$(echo $ALLSetment_ShareBufferPercent/$SetmentNum|bc)               echo "Master_ShareBufferPercent: $Master_ShareBufferPercent"      echo "ALLSetment_ShareBufferPercent: $ALLSetment_ShareBufferPercent"      echo "SingleSetment_ShareBufferPercent: $SingleSetment_ShareBufferPercent"            GP_MASTER_WORKBUFFER=$(echo $MEMORY*$SYSTEM_WORKBUFFER_MEM_PERCENT*$Master_ShareBufferPercent/100|bc)      GP_SEGMENT_WORKBUFFER=$(echo $MEMORY*$SYSTEM_WORKBUFFER_MEM_PERCENT*$SingleSetment_ShareBufferPercent/100|bc)              echo ""      echo "*******************************"      echo "********* greenplum info *********"      echo "*******************************"          echo "kernel.shmmax=$KERNEL_SHMMAX"       echo "kernel.shmall=$KERNEL_SHMALL"        echo "GP SetmentNum: $SetmentNum"      echo "SYSTEMSHMMEM: $SYSTEMSHMMEM MB"         echo "GP MASTER WORKBUFFER: $GP_MASTER_WORKBUFFER MB"      echo "GP SEGMENT WORKBUFFER: $GP_SEGMENT_WORKBUFFER MB"                  echo "Finish Check HardWare Info"             echo "*******************************"        read -t 100 -p "Do you want to continue install greenplum.[N/Y]:" CONTINUE_INSTALL      if [ "$CONTINUE_INSTALL" == "N" ] || [ "$CONTINUE_INSTALL" == "n" ]      then          echo "Terminal INSTALL"             exit 2              fi    }  CheckOperationSystem()  {      echo "Begin Check Operation System Info"      if [ $(uname) != "Linux" ]; then          echo "error! This is a linux script"          exit 1      fi        if [ -f /etc/redhat-release ]; then          VERSION=$(cat  /etc/redhat-release | awk '{print $7}' | bc)                    if [ $(echo "$VERSION < 6.1"|bc) -eq 1 ]          then              echo "error! Operating system version is too low, Need version above Red Hat Enterprise Linux v6.1"              exit 2;          fi          echo "This is a Redhat " ${VERSION};      else           echo "error! This is a Redhat script"          exit 1      fi                     # ---------------------------------------------------      #only root can run this script      # ---------------------------------------------------      if [ "$USER" != "root" ]      then         echo "Must be root to run the script!"         exit 1       fi                  HostName=`hostname`      if [[ $(hostname|grep -c localhost) -ge 1 ]]; then          echo "hostname should rename,not be localhost,  execute hostname newhostname; edit /etc/hosts and /etc/sysconfig/network"          exit 1      fi      if [[ $(cat /etc/hosts |grep  127.0.0.1|grep  -c  localhost) -lt 1 ]]; then          echo "add  '127.0.0.1  localhost'  to   /etc/hosts"          echo "127.0.0.1  localhost" >> /etc/hosts               fi          if [[ $(cat /etc/hosts|grep -c $HostName) -lt 1 ]]; then          echo "hostname should be in  /etc/hosts"          exit 1      fi      echo " Sucess Check Operation System Info"  }  CheckInstallDir(){      echo "Begin Init install_dir,Dir is:" ${install_dir}        if [ -d $install_dir ]; then          rm  -rf $install_dir      fi        mkdir -p $install_dir      chown -R $dba_user:$dba_group $install_dir      chmod -R 755 $install_dir        echo "Sunccess Init install_dir,Dir is:" ${install_dir}  }       CheckSystemParameters(){      if [ -f /etc/systemd/logind.conf ]; then       echo "RemoveIPC=no" >> /etc/systemd/logind.conf       service systemd-logind restart    fi      # ---------------------------------------------------      # Set Parameter for Linux      # ---------------------------------------------------      echo "Begin Check  /etc/sysctl.conf"        sed -i "/net.ipv4.ip_forward/d"   /etc/sysctl.conf      sed -i "/net.ipv4.conf.default.accept_source_route/d"   /etc/sysctl.conf      sed -i "/kernel.sysrq/d"   /etc/sysctl.conf      sed -i "/kernel.core_uses_pid/d"   /etc/sysctl.conf      sed -i "/net.ipv4.tcp_syncookies/d"   /etc/sysctl.conf      sed -i "/kernel.msgmnb/d"   /etc/sysctl.conf      sed -i "/kernel.msgmax/d"   /etc/sysctl.conf      sed -i "/kernel.sem/d"   /etc/sysctl.conf      sed -i "/kernel.shmmax/d"   /etc/sysctl.conf      sed -i "/kernel.shmmni/d"   /etc/sysctl.conf      sed -i "/kernel.shmall/d"   /etc/sysctl.conf      sed -i "/net.ipv4.tcp_tw_recycle/d"   /etc/sysctl.conf      sed -i "/net.ipv4.tcp_max_syn_backlog/d"   /etc/sysctl.conf      sed -i "/net.core.netdev_max_backlog/d"   /etc/sysctl.conf      sed -i "/vm.overcommit_memory/d"   /etc/sysctl.conf      sed -i "/vm.overcommit_ratio/d"   /etc/sysctl.conf          sed -i "/net.ipv4.conf.all.arp_filter/d"   /etc/sysctl.conf                        echo "net.ipv4.ip_forward = 0" >>   /etc/sysctl.conf      echo "net.ipv4.conf.default.accept_source_route = 0" >>   /etc/sysctl.conf      echo "kernel.sysrq = 1" >>   /etc/sysctl.conf      echo "kernel.core_uses_pid = 1" >>   /etc/sysctl.conf      echo "net.ipv4.tcp_syncookies = 1" >>   /etc/sysctl.conf      echo "kernel.msgmnb = 65536" >>   /etc/sysctl.conf      echo "kernel.msgmax = 65536" >>   /etc/sysctl.conf            echo "kernel.sem = 50100 64128000 50100 1280" >>   /etc/sysctl.conf      echo "kernel.shmmax = $KERNEL_SHMMAX" >>   /etc/sysctl.conf      echo "kernel.shmmni = 4096" >>   /etc/sysctl.conf      echo "kernel.shmall = $KERNEL_SHMALL" >>   /etc/sysctl.conf            echo "net.ipv4.tcp_tw_recycle=1" >>   /etc/sysctl.conf      echo "net.ipv4.tcp_max_syn_backlog=4096" >>   /etc/sysctl.conf      echo "net.core.netdev_max_backlog=10000" >>   /etc/sysctl.conf      echo "vm.overcommit_memory=0" >>   /etc/sysctl.conf      echo "vm.overcommit_ratio=90" >>   /etc/sysctl.conf            echo "net.ipv4.conf.all.arp_filter = 1" >>   /etc/sysctl.conf      echo "Finish Check  /etc/sysctl.conf"              echo "Begin Check  /etc/security/limits.conf"        sed -i "/* soft nproc/d" /etc/security/limits.conf      sed -i "/* hard nproc/d" /etc/security/limits.conf      sed -i "/* soft nofile/d" /etc/security/limits.conf      sed -i "/* hard nofile/d" /etc/security/limits.conf                echo " * soft nproc   131072  " > /etc/security/limits.d/90-nproc.conf      echo " * hard nproc   131072  " >> /etc/security/limits.d/90-nproc.conf                echo "* soft nproc   131072" >> /etc/security/limits.conf      echo "* hard nproc   131072" >> /etc/security/limits.conf      echo "* soft nofile  65535" >> /etc/security/limits.conf      echo "* hard nofile  65535" >> /etc/security/limits.conf      echo "Finish Check  /etc/security/limits.conf"        sysctl -p   1>/dev/null   }      dba_user=gpadmin;  dba_group=gpadmin;  sys_check=0;  if [ "$1" = "" ]; then      echo "usage:  install.sh install_dir"      exit 1  else      chown gpadmin:gpadmin  $install_dir    install_dir=$1/GreenPlum/  fi    if [ ! -f ./gpinitsystem_config ]; then      echo "miss  file gpinitsystem_config"      exit 1  fi    CheckHardWare  CheckOperationSystem  CheckExistsGPProcess  CheckDBAUser  CheckInstallDir  CheckSystemParameters     PrepareInstallPackages(){      echo "Begin Install  Packages"           GPHOME="${script_abs_path}/../compile/gpdb/"      dba_bash_profile=/home/${dba_user}/.bash_profile      sed -i "/greenplum_path.sh/d"  $dba_bash_profile      sed -i "/MASTER_DATA_DIRECTORY/d"  $dba_bash_profile      sed -i "/PGPORT/d"  $dba_bash_profile      sed -i "/PGUSER/d"  $dba_bash_profile      sed -i "/PGDATABASE/d" $dba_bash_profile      echo "source ${GPHOME}/greenplum_path.sh" >> $dba_bash_profile      echo "export MASTER_DATA_DIRECTORY=${install_dir}/db/gpmaster/bruce_seg-1" >> $dba_bash_profile            echo "export PGPORT=15432" >>  $dba_bash_profile      echo "export PGUSER=gpadmin" >>  $dba_bash_profile      echo "export PGDATABASE=brucedb" >>  $dba_bash_profile            HostName=`hostname`      hostname > ssh_hosts_file      sed -i "/MASTER_HOSTNAME/d"  gpinitsystem_config      echo "MASTER_HOSTNAME=${HostName}" >>gpinitsystem_config      sed -i "/MASTER_DIRECTORY/d"  gpinitsystem_config      echo "MASTER_DIRECTORY=${install_dir}/db/gpmaster" >>gpinitsystem_config                  SUBDATADIRSTRING="${install_dir}/db/gpsegdata"      DATA_DIRECTORYSTRING="declare -a DATA_DIRECTORY=("         for i in $(seq $SetmentNum)      do           DATA_DIRECTORYSTRING="${DATA_DIRECTORYSTRING}  ${SUBDATADIRSTRING}"      done               DATA_DIRECTORYSTRING="${DATA_DIRECTORYSTRING})"      echo $DATA_DIRECTORYSTRING              sed -i "/DATA_DIRECTORY/d"  gpinitsystem_config      echo  ${DATA_DIRECTORYSTRING} >>gpinitsystem_config                sed -i "/DATABASE_NAME/d"  gpinitsystem_config      echo  "DATABASE_NAME=brucedb" >>gpinitsystem_config                      cp ./ssh_hosts_file   ${install_dir}      cp ./gpinitsystem_config  ${install_dir}      mkdir -p ${install_dir}/db/gpmaster      mkdir -p ${install_dir}/db/gpsegdata      chgrp -R $dba_group $install_dir      chown -R $dba_user $install_dir      echo  "(          gpssh-exkeys -f ${install_dir}/ssh_hosts_file;            gpinitsystem   -a  -c  ${install_dir}/gpinitsystem_config -h  ${install_dir}/ssh_hosts_file;      )";      su - $dba_user -c "(          gpssh-exkeys -f ${install_dir}/ssh_hosts_file;            gpinitsystem   -a  -c ${install_dir}/gpinitsystem_config -h  ${install_dir}/ssh_hosts_file;      )";      echo  "host       all       bruce 0.0.0.0/0    trust"   >>${install_dir}/db/gpmaster/bruce_seg-1/pg_hba.conf       echo  "host       all       gpadmin  0.0.0.0/0    trust"   >>${install_dir}/db/gpmaster/bruce_seg-1/pg_hba.conf                   su - $dba_user -c "(        cd ${script_abs_path}; psql -f createdb.sql;         gpstop  -a -M fast;            gpstart -a;      )";      echo "Finish Install  Packages"    }  PrepareInstallPackages 

4. 执行命令 ./installgpdb.sh /greenplumdir  完成数据库安装。

 
0 0
原创粉丝点击