在linux系统上安装Greenplum数据库

来源:互联网 发布:iso软件标准 编辑:程序博客网 时间:2024/06/05 04:01

Greenplum是一套基于postgresql数据库的典型MPP集群数据库,整个GP环境中包含几个部分:

1.       Master:建立与客户端的连接和管理,生产SQL查询计划,执行计划向segment的分发收集执行结果。Master本身不负责数据存储,只存储数据字典。

2.       Segment:业务数据的存取,用户SQL的执行。

3.       Master高可用,使用节点standby的方式。

4.       Segment高可用,使用磁盘镜像的方式。

 

一、           准备

1.       软件:以下软件为确认可用的版本

1)       对于数据库版本和操作系统版本已经验证的有两个组合

a)       操作系统:Red Hat Enterprise Linux Server 6.2 64bit.

数据库:greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.zip

b)       操作系统:CentOS-6.8-x86_64-bin-DVD1.

数据库:greenplum-db-5.2.0-rhel6-x86_64.zip.zip

2)       辅助工具:Xshell,winscp等。

2.       操作系统环境:

由于是集群数据库,所以要准备多台服务器,并且每台服务器均按如下方法进行配置:

                                     i.             root修改内核

修改 /etc/sysctl.cof:

# Controls IP packet forwarding

net.ipv4.ip_forward = 0

# Controls source route verification

net.ipv4.conf.default.rp_filter = 1

 

# Do not accept source routing

net.ipv4.conf.default.accept_source_route =0

 

# Controls the System Request debuggingfunctionality of the kernel

kernel.sysrq = 1

 

# Controls whether core dumps will appendthe PID to the core filename.

# Useful for debugging multi-threadedapplications.

kernel.core_uses_pid = 1

 

# Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

 

# Disable netfilter on bridges

#net.bridge.bridge-nf-call-ip6tables = 0

#net.bridge.bridge-nf-call-iptables = 0

#net.bridge.bridge-nf-call-arptables = 0

 

# Controls the default maxmimum size of amesage queue

kernel.msgmnb = 65536

 

# Controls the maximum size of a message,in bytes

kernel.msgmax = 65536

kernel.msgmni = 2048

 

kernel.sem = 250 512000 100 2048

 

# Controls the maximum shared segment size,in bytes

#kernel.shmmax = 68719476736

kernel.shmmax = 500000000  --共享内存段最大值

kernel.shmmni = 4096      --共享内存段最大值

 

# Controls the maximum number of sharedmemory segments, in pages

#kernel.shmall = 4294967296

kernel.shmall = 4000000000   --共享内存段最大值

 

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_max_syn_backlog=4096

net.ipv4.ip_local_port_range = 1025 65535

net.core.netdev_max_backlog=10000

vm.overcommit_memory=2

net.ipv4.conf.all.arp_filter = 1

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

 

                                   ii.             root修改Linux最大连接数

vi /etc/security/limits.conf

#greenplum configs

* soft nofile 65536

* hard nofile 65536

* soft nproc 131072

* hard nproc 131072

 

逐个修改/etc/security/limits.d/90-nproc.conf
* soft nproc 131072

 

                                 iii.             I/O优化

vi /boot/grub/menu.lst

#greenplum configs

elevator=deadline

 

vi /etc/rc.d/rc.local, 最后加blockdev --setra 65536 /dev/sda –修改扇区读写能力。

 

                                  iv.             在host中配置节点信息

vi /etc/hosts

192.168.153.128 node01

192.168.153.129 node02

192.168.153.130 node03

192.168.153.131 node04

 

                                    v.             关闭防火墙

a)       在rhel中:

chkconfig --list iptables

chkconfig --level 0123456 iptables off

b)       在centOS中:

Service iptables stop

ntsysv

 

                                  vi.             关闭SELINUX

vi /etc/selinux/config

SELINUX=disabled

 

                                vii.             重启服务器

 

3.       系统结构

本例中建立了4台服务器,其中一台做master,一台做master的standby,剩下两台只做数据存储,基本图形如下:

node01

master

 

node02

master-standby

primary

 

primary

   

mirror

 

mirror

          

node03

primary

 

node04

primary

   

mirror

 

mirror

 

 

 

 

二、           Greenplum数据库安装

所有安装过程,若非特殊说明,均在master节点完成,本例中的master预定为node01。

 

1.       创建gpadmin用户

这步在所有节点上完成:

useradd gpadmin

passwd gpadmin

 

2.       配置gpadmin用户的环境变量(所有节点)

Vim .bashrc和.bash_profile,添加下面两行

source/usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/gpdata/master/gpseg-1

不做任何改动,默认安装位置,这两句会生效,注意后面建立存储目录时,和这个地方的master要对应。Greenplum-db是安装过程中创建的软连接,默认即可。

注意系统变量/etc/profile也添加这两句话,并注意执行source使之生效。

 

3.       执行安装(以下操作均在node01上完成)

将数据库安装文件上传到/opt目录下,解压并执行安装,这里不用对路径等信息做修改,一路默认即可,数据库名称可以适当进行调整。安装完成后,系统会自动在/usr/local目录下创建一个名为greenplum-db对安装目录的连接,这样和前面profile中的配置就一致了,如果修改了安装位置,有可能创建连接会失败。

 

4.       准备节点信息

创建一个目录专门存放节点配置,mkdir -p /opt/gpinst/,在这个目录里创建一个文件all_host,实际上文件名可以任意。内容是:

Node01

Node02

Node03

Node04

 

5.       建立节点之间的信任

就是通过节点配置,在节点之间执行交换key,保证节点之间的访问不需要登录验证过程。若前面已经配置好profile并执行了source,直接进入/usr/local/greenplum-db/bin,执行

gpssh-exkeys -f /opt/gpinst/all_host,根据系统提示操作,这里需要输入的是root的密码。

执行完成后可以在不同节点上通过ssh访问其他节点,若不需要再输入密码直接登录,则说明操作正确。

 

6.       执行安装

仍然在bin目录下执行:

gpseginstall -f /opt/gpinst/all_host -ugpadmin -p gpadmin

一路顺利完成部署操作

 

7.       创建存储目录

由一开始的内容可知,我们这次准备了4台服务器,分别为node01,node02,node03,node04。Node01上要安装集群的master,同时他还要另外承担一部分segment的任务,其次还要配置某个节点的mirror,node02与node01类似,只不过node02上会部署node01的master-standby,node03和node04只做segment并部署集群中某个节点的mirror。

Node01:

       /data/gpdata/master

       /data/gpdata/primary

       /data1/gpdata/mirror

Node02

       /data/gpdata/master

       /data/gpdata/primary

       /data1/gpdata/mirror

Node03

       /data/gpdata/primary

       /data1/gpdata/mirror

Node04

       /data/gpdata/primary

       /data1/gpdata/mirror

 

8.       开始创建目录:

Master

mkdir -p /data/gpdata/master

chown gpadmin:gpadmin /data/gpdata/master

 

segment(primary,在每个节点的/data目录下创建,使用gp自带的gpssh工具执行)

gpssh -f /opt/gpinst/all_host -e 'mkdir -p /data/gpdata/primary'

gpssh -f /opt/gpinst/all_host -e 'chown gpadmin:gpadmin/data/gpdata/primary'

 

mirror(同样在每个节点的/data1目录下创建)

gpssh -f /opt/ gpinst / all_host -e 'mkdir -p /data1/gpdata/mirror'

gpssh -f /opt/ gpinst / all_host -e 'chown gpadmin:gpadmin/data1/gpdata/mirror'

9.       设置时钟同步

注意这个操作是在本案例中的操作系统中进行,其他版本的Linux可能会不一样,甚至无法成功。

vi /etc/ntp.conf

加入一行:server 192.168.153.128,每个节点上都进行同样的操作,同时这个server填成统一的,这样所有的机器统一和这个IP的服务器进行时间同步。

重启ntpd服务 /etc/init.d/ntpd restart

查看ntp同步情况 ntpq -p

使ntpd服务重启服务器后也启动 chkconfig --level 0123456 ntpd on

 

10.   编辑数据库初始文件

使用gpadmin创建目录和文件,

Mkdir /home/gpadmin/gpconfigs

Cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config/home/gpadmin/gpconfigs/

Chmod 775 /home/gpadmin/gpconfigs/gpinitsystem_config

 

修改这个gpinitsystem_config文件:

declare -a DATA_DIRECTORY=(/data/gpdata/primary)–若在每个节点上的指定目录里只创建一个primary,则这里只写一个位置即可,若超过一个,就会在每个节点上创建多余1个的primary目录。

ARRAY_NAME="HX Greenplum DW"      –默认即可

SEG_PREFIX=gpseg –默认即可

PORT_BASE=40000 –默认即可

MASTER_HOSTNAME=node01

MASTER_DIRECTORY=/data/gpdata/master

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/mirror) --和primary一样

DATABASE_NAME=greenplum-db_test       

MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem     --注意这个文件需要从cli_help目录中复制过来。

 

11.   执行数据库初始化

Gpadmin在bin目录下:

gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /opt/gpinst/all_host

跟进提示,输入一次y,顺利就可以完成数据库部署。

 

12.    为master安装standby

为node01的master在node02上配置standby,在node02相同的位置创建一个master文件夹。

在node02上执行以下操作:

mkdir/data/gpdata/master

chowngpadmin:gpadmin /data/gpdata/master

在node01上执行以下操作:(注意此时数据库应是启动的)

gpinitstandby -snode02

按照顺序执行直接完成创建standby操作。

 

13.   设置访问权限

Greenplum数据库作为mpp结构的系统,用户只能通过Master节点对数据进行访问,所以需要修改master中的hba文件,使其能够接受网络中其他终端的访问。

Vi /data/gpdata/master/gpseq-1/pg_hba.conf,在最后加上

#user define

host   all     all     192.168.153.0/24  trust     --根据实际情况修改

host   all     all    127.0.0.1/28    trust

 

 

 

三、           Greenplum数据库的基本使用

1.       启动和停止

gpstart

gpstop

 

2.       查看数据库状态

psql –l

pgstate

 

3.       命令行连接访问数据库

psql -d hx_gp -h node01 -p 5432 -U gpadmin

原创粉丝点击