GreenPlum集群搭建步骤(傻瓜式手把手教学)

GreenPlum数据库集群搭建步骤(傻瓜式手把手教学)

环境Linux
系统CentOS7
架构x86
数据库版本6.22.3

集群服务器:

IP主机名
11.111.111.111master
22.222.222.222standby
33.333.333.333seg1
44.444.444.444seg2
55.555.555.555seg3
备注:standby是备用master,当master挂掉了,可以通过命令切换至standby接管

1.关闭防火墙(所有服务器)root用户执行

systemctl stop firewalld
systemctl disable firewalld

2.关闭SELINUX(所有服务器)root用户执行

vim /etc/selinux/config
#确保SELINUX=disabled

3.配置/etc/hosts (master服务器)root用户执行

vim /etc/hosts
11.111.111.111 master
22.222.222.222 standby
33.333.333.333 seg1
44.444.444.444 seg2
55.555.555.555 seg3
#保存退出

4.修改主机名(所有服务器) root用户执行

IP:11.111.111.11
vim /etc/hostname
master
#保存退出

IP:22.222.222.222
vim /etc/hostname
standby
#保存退出

IP:33.333.333.333
vim /etc/hostname
seg1
#保存退出

IP:44.444.444.444
vim /etc/hostname
seg2
#保存退出

IP:55.555.555.555
vim /etc/hostname
seg3
#保存退出

5.重启服务器(所有服务器)root用户执行

#重启服务器
reboot

6.创建gpadmin用户(所有服务器) root用户执行

#在每个节点上创建gpadmin用户,用于管理和运行gp集群
groupadd gpadmin
useradd gpadmin -g gpadmin -s /bin/bash
passwd gpadmin
密码:gpadmin

7.配置内核参数(所有服务器) root用户执行

#关于内核参数的配置,请查阅greenplum官方文档
#这里可先使用这一套配置,也是在网上找的
#内核参数的配置也会影响到gp数据库性能
#后续可以自行调整,可以先这样设置,先把GP搭建成功
vim /etc/sysctl.conf

kernel.shmall = xxx # 服务器上执行获取 echo $(expr $(getconf _PHYS_PAGES) / 2)
kernel.shmmax = xxx # 服务器上执行获取 echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 75
net.IPv4.IP_local_port_range = 10000 65535
kernel.sem = 500 2048000 200 4096
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.IPv4.tcp_syncookies = 1
net.IPv4.conf.default.accept_source_route = 0
net.IPv4.tcp_max_syn_backlog = 4096
net.IPv4.conf.all.arp_filter = 1
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
#对于大于64GB的主机,加上下面4行
vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736 # 1.5GB
vm.dirty_bytes = 4294967296 # 4GB
#对于小于64GB的主机删除dirty_background_bytes和dirty_bytes这两行,修改下面2行
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10
#保存退出

8.让所有服务器的内核参数生效(所有服务器执行)root执行

sysctl -p

9.安装依赖(所有服务器)root用户执行

yum install -y zip unzip openssh-clients ed ntp net-tools perl perl-devel perl-ExtUtils* mlocate lrzsz parted apr apr-util bzip2 krb5-devel libevent libyaml rsync

10.将greenplum的rpm包上传到服务器,放在一个目录下(自己决定)

11.执行安装程序(master服务器执行)root用户执行

#执行安装,默认会安装到/usr/local目录下
rpm -ivh greenplum-6.22.3-rhel7-x86_64.rpm
#安装完成后可在/usr/local下看到greenplum-6.22.3和它的软连接greenplum-db
cd /usr/local
#删除软连接
rm –rf greenplum-db
#移动gp
mv greenplum-6.22.3 /home/gpadmin
cd /home/gpadmin
#建立软连接
ln -s /home/gpadmin/greenplum-6.22.3 /home/gpadmin/greenplum-db
#赋权
chown -R gpadmin:gpadmin /home/gpadmin

12.生成密钥对(master服务器执行)gpadmin用户执行

#切换到gpadmin用户
su - gpadmin
ssh-keygen -t rsa
#输出内容不用管,一直按Enter键即可

13.将master公钥复制到其它服务器中(master服务器执行)gpadmin用户执行

#提示输入yes/no? 输入yes,中途提示输入密码 ,输入gpadmin用户的密码即可
ssh-copy-id master
ssh-copy-id standby
ssh-copy-id seg1
ssh-copy-id seg2
ssh-copy-id seg3

14.编辑文本

vim /home/gpadmin/gpconfigs/all_hosts
#将所有主机名写入,一行一个不要有空格
master
standby
seg1
seg2
seg3
#保存退出


vim /home/gpadmin/gpconfigs/standby_seg_hosts
#将standby和seg的主机名写入,一行一个不要有空格
standby
seg1
seg2
seg3
#保存退出


vim /home/gpadmin/gpconfigs/seg_hosts
#将seg的主机名写入,一行一个不要有空格
seg1
seg2
seg3
#保存退出

15.集群互信(master服务器执行)gpadmin用户执行

cd /home/gpadmin
source /home/gpadmin/greenplum-db/greenplum_path.sh
gpssh-exkeys -f /home/gpadmin/gpconfigs/all_hosts

16.压缩程序包(master服务器执行)gpadmin用户执行

cd /home/gpadmin
tar -cf gp6.tar greenplum-6.22.3

17.压缩包分发(master服务器执行)gpadmin用户执行

#把压缩包分发到其他服务器的/home/gpadmin目录中
cd /home/gpadmin
source /home/gpadmin/greenplum-db/greenplum_path.sh
gpscp -f /home/gpadmin/gpconfigs/standby_seg_hosts gp6.tar =:/home/gpadmin
#去其他服务器查看一下是否有了

18.执行解压(master服务器执行)gpadmin用户执行

source /home/gpadmin/greenplum-db/greenplum_path.sh
gpssh -f /home/gpadmin/gpconfigs/standby_seg_hosts
#有=> 代表进入控制所有子节点模式
=> cd /home/gpadmin
=> tar -xf gp6.tar
=> ln -s greenplum-6.22.3 greenplum-db
=> exit

19.设置环境变量(master服务器执行)gpadmin用户执行

vim /home/gpadmin/.bashrc
#将下列语句添加到文本末尾
source /home/gpadmin/greenplum-db/greenplum_path.sh
//wq保存退出
source /home/gpadmin/.bashrc
#环境变量文件分发到其他节点
gpscp -f /home/gpadmin/gpconfigs/standby_seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc

20.创建master数据目录(master服务器执行)(gpadmin用户执行)

#/data自己决定,这个目录占用空间会很大,要将master目录放在专门存放数据的盘下
mkdir -p /data/master
chown -R gpadmin:gpadmin /data

21.创建standby数据目录(master节点执行)(gpadmin用户执行)

#创建standby的数据目录
source /home/gpadmin/greenplum-db/greenplum_path.sh
#/data自己决定,这个目录占用空间会很大,要将master目录放在专门存放数据的盘下
#在standby服务器下创建master目录
gpssh -h standby -e 'mkdir -p /data/master'
gpssh -h standby -e 'chown -R gpadmin:gpadmin /data'

22.创建seg数据目录(master节点执行)(gpadmin用户执行)

#/data自己决定,这个目录占用空间会很大,要将p和m目录放在专门存放数据的盘下
#p和m目录的数量请查阅官方文档,根据服务器配置决定
source /home/gpadmin/greenplum-db/greenplum_path.sh
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'mkdir -p /data/p1'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'mkdir -p /data/p2'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'mkdir -p /data/m1'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'mkdir -p /data/m2'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'chown -R gpadmin:gpadmin /data'

23.拷贝初始化配置模板(master节点执行)(gpadmin用户)

#拷贝配置文件模板
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config

24.根据需要修改参数(master服务器)(gpadmin用户)

vim /home/gpadmin/gpconfigs/gpinitsystem_config

# FILE NAME: gpinitsystem_config

# Configuration file needed by the gpinitsystem

################################################
#### REQUIRED PARAMETERS
################################################

#### Name of this Greenplum system enclosed in quotes.
ARRAY_NAME="Greenplum Data Platform"

#### Naming convention for utility-generated data directories.
SEG_PREFIX=gpseg

#### Base number by which primary segment port numbers 
#### are calculated.
#p实例起始端口
PORT_BASE=6000

#### File system location(s) where primary segment data directories 
#### will be created. The number of locations in the list dictate
#### the number of primary segments that will get created per
#### physical host (if multiple addresses for a host are listed in 
#### the hostfile, the number of segments will be spread evenly across
#### the specified interface addresses).
#定义p实例的数据目录
declare -a DATA_DIRECTORY=(/data/p1 /data/p2)

#### OS-configured hostname or IP address of the master host.
#这里写master的主机名
MASTER_HOSTNAME=master

#### File system location where the master data directory 
#### will be created.
#这里写master的数据目录路径
MASTER_DIRECTORY=/data/master

#### Port number for the master instance. 
#定义gp数据库的端口
MASTER_PORT=5432

#### Shell utility used to connect to remote hosts.
TRUSTED_SHELL=ssh

#### Maximum log file segments between automatic WAL checkpoints.
CHECK_POINT_SEGMENTS=8

#### Default server-side character set encoding.
ENCODING=UNICODE

################################################
#### OPTIONAL MIRROR PARAMETERS
################################################

#### Base number by which mirror segment port numbers 
#### are calculated.
#定义m实例的起始端口号
#m指的是当p实例挂了,m自动接管p的工作,后续可通过gp的gprecover命令来恢复成p
MIRROR_PORT_BASE=7000

#### File system location(s) where mirror segment data directories 
#### will be created. The number of mirror locations must equal the
#### number of primary locations as specified in the 
#### DATA_DIRECTORY parameter.
#定义m实例的数据目录路径
declare -a MIRROR_DATA_DIRECTORY=(/data/m1 /data/m2)


################################################
#### OTHER OPTIONAL PARAMETERS
################################################

#### Create a database of this name after initialization.
#DATABASE_NAME=name_of_database

#### Specify the location of the host address file here instead of
#### with the -h option of gpinitsystem.
#MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem

25.初始化数据库(master服务器)(gpadmin用户)

source /home/gpadmin/greenplum-db/greenplum_path.sh
gpinitsystem -c /home/gpadmin/config/gpinitsystem_config --locale=C -h /home/gpadmin/gpconfigs/seg_hosts --mirror-mode=spread

26.初始化成功后设置环境变量(所有服务器)(gpadmin用户)

vim ~/.bashrc
#编辑gpadmin 用户的环境变量,增加下面这条
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
#保存退出
source ~/.bashrc

27.如果初始化失败,需清空数据目录数据(master服务器执行)(gpadmin用户)

gpstop -M fast
rm -f /tmp/.s.PGSQL.5432 /tmp/.s.PGSQL.5432.lock
#删除主节点master
rm -rf /data/master/gpseg*
#删除备用主节点standby
source /home/gpadmin/greenplum-db/greenplum_path.sh
gpssh -h standby -e 'rm -rf /data/master/gpseg*'
#所有子节点
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'rm -rf /data/p1/gpseg*'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'rm -rf /data/p2/gpseg*'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'rm -rf /data/m1/gpseg*'
gpssh -f /home/gpadmin/gpconfigs/seg_hosts -e 'rm -rf /data/m2/gpseg*'

初始化成功后

1.配置参数(master服务器)(gpadmin用户)

#配置 pg_hba.conf
vim /data/master/gpseg-1/pg_hba.conf
#添加下面的这一行 
#意思是在任何地方都可以连接到本数据库
host all all 0.0.0.0/0 md5

2.将standby加入集群(master服务器)(gpadmin用户)

source /home/gpadmin/greenplum-db/greenplum_path.sh 
gpinitstandby -s standby

3.连接数据库(master服务器)(gpadmin用户)

#psql -h hostname -p port -d database -U user

#-h后面接对应的master主机名或者ip
#-p后面接的端口号5432
#-d后面接数据库名默认有一个叫做postgres的
#-u后面接用户,默认有gpadmin

#在master服务器执行psql连接数据库是免密的
#执行psql连接数据库
psql -h master -p 5432 -d postgres -U gpadmin

#执行赋权命令(用于给gpload装载外部表加操作权限)
alter role user CREATEEXTTABLE;
#提示ALTER ROLE 成功

#退出连接
\q

4.使pg_hba.conf配置参数生效(master服务器)(gpadmin用户)

#不是在执行psql -h master -p 5432 -d postgres -U gpadmin连接数据库后执行这个命令,而是在外执行
gpstop -u

5.检查数据库状态(master服务器)(gpadmin用户)

#不是在执行psql -h master -p 5432 -d postgres -U gpadmin连接数据库后执行这个命令,而是在外执行
gpstate
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值