Greenplum数据库的安装

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等。

 

准备三台虚拟机 node-01,node-02,node-03 

 

2.       操作系统环境:

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

  \i.      root修改内核

修改vi /etc/sysctl.conf

# 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

 

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

 

 iii.             I/O优化

vi /boot/grub/menu.lst

#greenplum configs

elevator=deadline

 

iV.    vi /etc/rc.d/rc.local

最后加blockdev --setra 65536 /dev/sda –修改扇区读写能力。

 

 

 Greenplum数据库安装

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

 

1.       创建gpadmin用户

这步在所有节点上完成:

useradd gpadmin         创建gpadmin账户

passwd gpadmin          给账户gpadmin设置密码

自己设置的 12345678

 

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

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

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

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

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

 

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

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

 

unzip greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.zip

cd greenplum-db-4.3.8.2-build-1-RHEL5-x86_64

chmod u+x greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.bin  

./greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.bin(安装过程根据提示 yesEnter即可) 

4.       准备节点信息

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

node-01

node-02

node-03

 

关闭防火墙

chkconfig iptables off  ;//永久关闭,重启后不启动

service iptables stop ;//重启后会启动 ,用service iptables status检查状态。

systemctl stop firewalld.service  (centos7.x的命令)

关闭SElinux

 

编辑 vim /etc/sysconfig/selinux

修改SELINUX=enforcing SELINUX=disabled

重启生效。  reboot

查看selinux状态,执行:sestatus -v  

获取 SELinux 状态:getenforce

 

安装GCC

http://vault.centos.org/6.3/os/x86_64/Packages/

到这里可以下载需要用的包,打成一个zip包

 

mkdir /export/server/gcc

然后上传gcc.zip

然后解压 unzip  cgcc.zip

rpm -ivh kernel-headers-2.6.32-279.el6.x86_64.rpm

rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm

rpm -ivh cpp-4.4.6-4.el6.x86_64.rpm

rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm

rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm

rpm -ivh libgomp-4.4.6-4.el6.x86_64.rpm

rpm -Uvh gcc-4.4.6-4.el6.x86_64.rpm --nodeps --force

 

 

5.       建立节点之间的信任

 

a) 在node-01 机器上 ~目录下

ssh-keygen -t rsa [dsa] 按四下回车    rsa和dsa只是一种加密的方式 我们选择一个就行

生成密钥文件和私钥文件 id_rsa,id_rsa.pub

 

b) 将公钥拷贝给node-04机器, ~目录下

ssh-copy-id node-04

c) 需要完成第一台机器到所有免密

ssh-copy-id node-01

ssh-copy-id node-02

ssh-copy-id node-03 这样 根据自己的情况

 

6.       执行安装 

仍然在bin( cd  /usr/local/greenplum-db-4.3.8.2/bin)目录下执行:

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

一路顺利完成部署操作

 

7.       创建存储目录

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

(这里不用创建.第八步会创建)

node01:

      mkdir -p /data/gpdata/master

      mkdir -p /data/gpdata/primary

      mkdir -p /data1/gpdata/mirror

node02

      mkdir -p /data/gpdata/master

     mkdir -p  /data/gpdata/primary

      mkdir -p /data1/gpdata/mirror

node03

      mkdir -p /data/gpdata/primary

      mkdir -p /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 node-01,每个节点上都进行同样的操作,同时这个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

 

在cd /home/gpadmin/gpconfigs/

修改这个 vim 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=node-01

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目录下:

cd /usr/local/greenplum-db/bin

需要切换为gpadmin用户

su  gpadmin

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

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

 

12.    为master安装standby

为node-01的master在node-02上配置standby,在node-02相同的位置创建一个master文件夹。

在node02上执行以下操作:

mkdir /data/gpdata/master

chown gpadmin:gpadmin /data/gpdata/master

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

gpinitstandby -snode-02

按照顺序执行直接完成创建standby操作。(输出y然后回车)

 

13.   设置访问权限

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

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

#user define

host   all     all     192.168.25.190/24  trust    

host   all     all    127.0.0.1/28    trust

 

 

三、           Greenplum数据库的基本使用

1.       启动和停止

 su gpadmin

gpstart

gpstop

 

2.       查看数据库状态

psql -l

pgstate

 

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

psql -d greenplum-db_test -h node-1 -p 5432 -U gpadmin

 

在命令行界面也可以输入以下

\h:查看SQL命令的解释,比如\h select。

\?:查看psql命令列表。

\l:列出所有数据库。

\c [database_name]:连接其他数据库。

\d:列出当前数据库的所有表格。

\d [table_name]:列出某一张表格的结构。

\du:列出所有用户。

\e:打开文本编辑器。

\conninfo:列出当前数据库和连接的信息。

\q   退出命令行界面

 

 

# 创建新表

CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);

# 插入数据

INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');

# 选择记录

SELECT * FROM user_tbl;

# 更新数据

UPDATE user_tbl set name = '李四' WHERE name = '张三';

# 删除记录

DELETE FROM user_tbl WHERE name = '李四' ;

# 添加栏位

ALTER TABLE user_tbl ADD email VARCHAR(40);

# 更新结构

ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;

# 更名栏位

ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;

# 删除栏位

ALTER TABLE user_tbl DROP COLUMN email;

# 表格更名

ALTER TABLE user_tbl RENAME TO backup_tbl;

# 删除表格

DROP TABLE IF EXISTS backup_tbl;

 

 

有问题的可以留言或者邮箱 [email protected]

猜你喜欢

转载自blog.csdn.net/qq_35248268/article/details/81388190