# cat /etc/hosts
172.27.9.81 mdw.domain mdw
172.27.9.82 sdw1.domain sdw1
172.27.9.83 sdw2.domain sdw2
注意:一定要做ping解析
# groupadd -g 535 gpadmin
# useradd -g 535 -u535 -m -d /home/gpadmin -s /bin/bash gpadmin
# passwd gpadmin
# cat /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.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
##swap使用率优化
vm.swappiness=0
vm.overcommit_memory = 2
执行以下命令使参数生效:
# sysctl –p
# vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
# service iptables stop
或者开放5432端口,该端口之后会用到
# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# /etc/rc.d/init.d/iptables save
关闭SELINUX
# vi /etc/selinux/config
修改SELINUX=enforcing为 SELINUX=disabled
# cp /boot/grub/grub.conf /boot/grub/grub.confbak
追加elevator=deadline到grub.conf文件
#/usr/sbin/ntpdate -us 172.27.5.123;hwclock -w;
# env |grep LANG
如果不是en_US.UTF-8,请修改/etc/sysconfig/i18n中的LANG为”en_US.UTF-8”
# yum -y install coreutils glib2 lrzsz e4fsprogs xfsprogs 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 gcc-c++ python-py bzip2-devel libevent-devel apr-devel curl-devel ed python-paramiko python-devel
上传或者下载python依赖库包和依赖包列表文件(requirements.txt)到/tmp目录下,进行离线安装:
requirements.txt包括:
appdirs (1.4.3)
argparse (1.4.0)
distribute (0.6.10)
epydoc (3.0.1)
iniparse (0.3.1)
lockfile (0.12.2)
ordereddict (1.2)
packaging (16.8)
paramiko (1.7.5)
pip (9.0.1)
PSI (0.3b2)
psutil (5.2.2)
py (1.4.18)
pycrypto (2.0.1)
pycurl (7.19.0)
pygpgme (0.1)
pyparsing (2.2.0)
setuptools (35.0.2)
six (1.10.0)
urlgrabber (3.9.1)
wheel (0.29.0)
yum-metadata-parser (1.1.2)
# tar zxf pip-9.0.1.tar.gz
# cd pip-9.0.1
# python setup.py install
# cd /tmp
# pip install --no-index --find-links="/tmp/offline_packages" -r requirements.txt
注意:优化完成后,必须重启所有主机
# su - gpadmin
$ mkdir ~/gpsql
(下载链接:wget https://codeload.github.com/greenplum-db/gpdb/zip/5.0.0-alpha.2)
上传5.0.0-alpha.2至/home/gpadmin
# cd /home/gpadmin
# chown gpadmin: gpadmin 5.0.0-alpha.2
# su - gpadmin
$ unzip 5.0.0-alpha.2
$ ll
$ ./configure --prefix=/home/gpadmin/gpsql --with-gssapi --with-pgport=5432 --with-libedit-preferred --with-perl --with-python --with-openssl --with-pam --with-krb5 --with-libxml --enable-cassert --enable-testutils --enable-depend
$ make
$ make install
至此,master节点上的GP完成安装
[root@mdw ~]# su - gpadmin
[gpadmin@mdw ~]$ mkdir -p conf
[gpadmin@mdw ~]$ cd conf
[gpadmin@mdw conf]$ cat host_list
mdw
sdw1
sdw2
[gpadmin@mdw conf]$cat seg_hosts
sdw1
sdw2
$ source /home/gpadmin/gpsql/greenplum_path.sh
gpssh-exkeys -f /home/gpadmin/conf/host_list
注意:
(1)首次执行gpssh-exkeys命令时,在[STEP 3 of 5],要输入每个segment节点的gpadmin用户的密码,如果密码一样只输入一次。
(2)gpssh-exkeys命令使用的时候一定要用gpadmin用户,因为这个命令会生成ssh的免密码登录的秘钥,在/home/gpadmin/.ssh这里。如果以root身份使用gpssh-exkeys命令,那么生成的.ssh秘钥在root的home下面或者是在/home/gpadmin下面但是是root的所有者,如果之后使用gpadmin身份执行相应操作的时候就没有权限。
[INFO] completed successfully 说明执行成功,之后就可以使用下面的命令开启批量操作:
[gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/host_list
将gp安装包分发到各个segment节点
[root@mdw ~]# su - gpadmin
打包:
[gpadmin@mdw ~]$ cd /home/gpadmin/
[gpadmin@mdw ~]$ 7za a gp500.7z /home/gpadmin/gpsql/*
然后利用gpscp命令将这个文件复制到每一台机器上:
[gpadmin@mdw ~]$ source /home/gpadmin/gpsql/greenplum_path.sh
[gpadmin@mdw greenplum]$ gpscp -f /home/gpadmin/conf/seg_hosts /home/gpadmin/gp500.7z =:/home/gpadmin/
[gpadmin@mdw greenplum]$ cd ~/conf/
[gpadmin@mdw conf]$ gpssh -f seg_hosts
=> 7za x gp500.7z -o/home/gpadmin/gpsql/
=> ll gpsql
这样就完成了所有节点的安装。
# mkdir -p /data/sdv1/gpdata
# chown -R gpadmin:gpadmin /data/sdv1/gpdata
$su – gpadmin
$ source /home/gpadmin/gpsql/greenplum_path.sh
$ gpssh -f conf/host_list
=> cd /data/sdv1/gpdata
=> mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2
=> ll
其中gpmaster 用于存放master的数据
gpdata1 gpdata2 用于存放 segment的primary数据
gpdatam1 gpdatam2 用于存放segment的mirror 数据
编辑.bash_profile文件,追加以下内容:
# su - gpadmin
[gpadmin@mdw ~]$ cd ~
[gpadmin@mdw ~]$ vi .bash_profile
source /home/gpadmin/gpsql/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/sdv1/gpdata/gpmaster/gpseg-1
export PGPORT=5432
export PGDATABASE=testDB
备注:
MASTER_DATA_DIRECTORY指的是master数据存放目录
PGPORT指的是安装greenplum数据库的端口号。
环境变量生效
[gpadmin@mdw ~]$ source .bash_profile
[gpadmin@sdw1 ~]$ source .bash_profile
[gpadmin@sdw2 ~]$ source .bash_profile
将/home/gpadmin/gpsql/docs/cli_help/gpconfigs/gpinitsystem_config文件copy到/home/gpadmin目录下然后编辑,保留如下参数即可:
# su - gpadmin
$ cp /home/gpadmin/gpsql/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/conf/
$ cat /home/gpadmin/conf/gpinitsystem_config
ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/data/sdv1/gpdata/gpdatap1)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/data/sdv1/gpdata/gpmaster
MASTER_PORT=5432
TRUSTED_SHELL=/usr/bin/ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UTF-8
MASTER_MAX_CONNECT=250
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/data/sdv1/gpdata/gpdatam1)
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
备注:日志目录/home/gpadmin/gpAdminLogs/,有错误要分析原因
# su - gpadmin
$ cd conf
$ gpinitsystem -c gpinitsystem_config -h seg_hosts
核对配置参数,输入:y
初始化完成,检查日志
$ gpstart -a
$ gpstop -a
$ gpstate
$ gpstop -a
$ gpstart -a
检测当前硬件配置的性能:
# su - gpadmin
[gpadmin@mdw ~] cdconf[gpadmin@mdwconf] gpcheckperf -f host_list -d /data/sdv1/gpdata –v
命令验证
$ psql -d postgres
psql (8.2.15)
Type "help" for help.
postgres=#
输入查询语句验证
postgres=# select datname,datdba,encoding,datacl from pg_database;
datname | datdba | encoding | datacl
-----------+--------+----------+----------------------------------
template1 | 10 | 6 | {=c/gpadmin,gpadmin=CTc/gpadmin}
template0 | 10 | 6 | {=c/gpadmin,gpadmin=CTc/gpadmin}
postgres | 10 | 6 |
(3 rows)
postgres=# \l
List of databases
Name | Owner | Encoding | Access privileges
-----------+---------+----------+---------------------
postgres | gpadmin | UTF8 |
template0 | gpadmin | UTF8 | =c/gpadmin
: gpadmin=CTc/gpadmin
template1 | gpadmin | UTF8 | =c/gpadmin
: gpadmin=CTc/gpadmin
(3 rows)
postgres=# \q
安装pgadmin IV使用该客户端,连接greenplum 5.0数据库
$ psql -d postgres
postgres =# alter role gpadmin with password 'gpadmin';
在master节点的 $MASTER_DATA_DIRECTORY/pg_hba.conf 中添加新的客户端服务器信息。master节点的pg_hba.conf配置文件,控制客户端访问Greenplum系统。
注意:segment节点也有pg_hba.conf配置文件,它只能控制master节点能否访问segment,决不能运行客户端连接。所以不要修改segment的pg_hba.conf文件。
格式:
host database role CIDR-address authentication-method
pg_hba.conf中记录是被顺序读取的,所有记录的顺序是有象征性意义的。
通常前面的记录匹配更少的连接但要求较弱的认证,后面的记录匹配更多的连接但要求更严格的认证。
例如:允许gpadmin用户在172.27.8.x网段访问所有数据库,使用md5验证。
$vi $MASTER_DATA_DIRECTORY/pg_hba.conf
host all all 172.27.8.0/22 trust
host all gpadmin 172.27.8.1/22 md5
注意:变更配置后必须重启集群
方法1:psql工具
$ psql -h 172.27.9.81 -p 5432 -d postgres -U gpadmin -W
Password for user gpadmin:
-h 172.27.9.81 是指定连接master的ip地址
-p 5432 是安装greenplum数据库时,设置的端口号,当前数据库端口号是5432
-u gpadmin 是指定连接的用户名
-W为gpadmin的密码