Greenplum数据库扩容实务(上)-准备工作

任何分布式系统都要面对的事儿就包括扩容,不然分布式系统存在的意义就大打折扣了,这篇就介绍一下对GP进行扩容的准备过程,事实上,扩容的实施是个非常简单的过程,主要要做的就是准备。

准备

创建主机信息文件

用GP管理员OS用户gpadmin创建6个主机信息文件:

  • /home/gpadmin/20150523exp/currenthosts:当前已经存在的所有主机的主机名
  • /home/gpadmin/20150523exp/currentnodes:当前已经存在的所有主机的主机名,以及seg node使用的地址,示例如下:
sdw1
sdw1-1
sdw1-2
sdw2
sdw2-1
sdw2-2
...
  • /home/gpadmin/20150523exp/newhosts:本次扩容的新主机的主机名
  • /home/gpadmin/20150523exp/newnodes:本次扩容的新主机的主机名,以及seg node使用的地址
  • /home/gpadmin/20150523exp/allhosts:新的旧的加一起的主机名
  • /home/gpadmin/20150523exp/allnodes:新的旧的加一起的主机名 ,以及seg node使用的地址

操作系统安装和配置

  • 安装新主机OS:所有配置应与已有主机一致,在特殊情况下(比如新服务器不再支持旧的OS),可按照GP本身的OS兼容性列表在新主机上使用较高版本OS。
  • root登陆mdw(GP master),编写一个脚本/root/uetchosts20150523.sh:
#!/bin/bash
echo –e >> /etc/hosts
echo "#20150523 expand hosts begin" >> /etc/hosts
echo 192.168.1.26 sdw26-1 sdw26 >> /etc/hosts
echo 192.168.2.26 sdw26-2 >> /etc/hosts
echo –e >> /etc/hosts
echo 192.168.1.27 sdw27-1 sdw27 >> /etc/hosts
echo 192.168.2.27 sdw27-2 >> /etc/hosts
...
echo "#20150523 expand hosts end" >> /etc/hosts
echo –e >> /etc/hosts
  • 用此脚本更新所有现有主机的hosts文件,添加新主机的域名解析
chmod 755 /root/uetchosts20150523.sh
gpscp -f /home/gpadmin/currenthosts uetchosts20150523.sh =:/root/
gpssh -f /home/gpadmin/currenthosts /root/uetchosts20150523.sh
  • 更新新增主机的hosts:root登陆新增的8台服务器,将现有seg host的/etc/hosts文件中关于GP主机的定义全部添加到/etc/hosts中

交换root授权信息

root登陆mdw,按照提示输入新服务器的root密码

source /usr/local/greenplum-db/greenplum_path.sh
gpssh-exkeys -e /home/gpadmin/20150523exp/currentnodes -x /home/gpadmin/20150523exp/newnodes 

创建gpadmin用户

gpssh -f /home/gpadmin/20150523exp/newhosts
=> useradd gpadmin -d /home/gpadmin
=> echo p@ssword | passwd gpadmin --stdin
=> ll /home
=> exit
su - gpadmin
gpssh-exkeys -e /home/gpadmin/20150523exp/currentnodes -x /home/gpadmin/20150523exp/newnodes
exit

更改操作系统配置并创建数据文件路径

gpscp -f /home/gpadmin/20150523exp/newhosts /etc/security/limits.conf =:/etc/security/limits.conf
gpscp -f /home/gpadmin/20150523exp/newhosts /etc/security/limits.d/90-nproc.conf  =:/etc/security/limits.d/90-nproc.conf
gpscp -f /home/gpadmin/20150523exp/newhosts /etc/sysctl.conf  =:/etc/sysctl.conf
gpssh -f /home/gpadmin/20150523exp/newhosts
=> sysctl –p
=> mkdir /data1/primary /data1/mirror /data2/primary /data2/mirror /data3/primary /data3/mirror /data4/primary /data4/mirror
=> chown -R gpadmin:gpadmin /data1‘
=> chown -R gpadmin:gpadmin /data2‘
=> chown -R gpadmin:gpadmin /data3‘
=> chown -R gpadmin:gpadmin /data4‘
=> ll /
=> ll /data1 /data2 /data3 /data4
=> exit
gpssh -f /home/gpadmin/20150523exp/allhosts
=> echo ‘deadline‘ > /sys/block/sda/queue/scheduler
=> echo ‘deadline‘ > /sys/block/sdb/queue/scheduler
=> echo ‘deadline‘ > /sys/block/sdc/queue/scheduler
=> echo ‘deadline‘ > /sys/block/sr0/queue/scheduler
=> exit

安装GP并设置设备

unset OPENSSL_CONF
gpseginstall -f /home/gpadmin/20150523exp/newnodes -u gpadmin -p [email protected]
gpssh -f /root/20150523exp/newhosts ll $GPHOME

编译发布uuid

如果使用了一些第三方的包,需要在新的seg host进行编译发布,此处以uuid进行举例:

source /usr/local/greenplum-db/greenplum_path.sh
gpscp -f /home/gpadmin/20150523exp/newhosts /home/gpadmin/uuid-1.6.2.tar.gz =:/home/gpadmin
gpssh -f /home/gpadmin/20150523exp/newhosts
=> source /usr/local/greenplum-db/greenplum_path.sh
=> cd /home/gpadmin
=> tar zxvf uuid-1.6.2.tar.gz
=> cd uuid-1.6.2
=> ./configure --prefix=/usr/local/greenplum-db --with-pgsql
=> make
=> make install
=> chown -R gpadmin:gpadmin /usr/local/greenplum-db-4.3.5.0
=> ll /usr/local/greenplum-db-4.3.5.0/libuuid*
=> ll /usr/local/greenplum-db-4.3.5.0/lib/postgresql/uuid*
=> echo "source /usr/local/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bash_profile
=> cat /home/gpadmin/.bash_profile
=> ll $GPHOME
=> exit

检查OS配置和性能

检查所有节点状态

gpcheck -f /root/20150523exp/allnodes

在此过程中可能遇到如下问题:

  • 所有的节点都有如下告警,可忽略:
20150520:15:45:48:034966 gpcheck:mdw:root-[ERROR]:-GPCHECK_ERROR host(sdw25): on device (/dev/sdc2) blockdev readahead value ‘256‘ does not match expected value ‘16384‘
  • 有机器的DNS和NTP没有正确配置,可通过脚本解决:
20150520:15:28:03:035830 gpcheck:mdw:root-[ERROR]:-GPCHECK_ERROR host(sdw24): potential NTPD issue.  gpcheck start time (Wed May 20 15:28:00 2015) time on machine (Wed May 20 15:27:36 2015)
gpscp -f /home/gpadmin/20150523exp/allhosts /etc/resolv.conf =:/etc/resolv.conf
gpssh -f /home/gpadmin/20150523exp/allhosts
=> service ntpd stop
=> ntpdate ntp.citicsinfo.com
=> service ntpd start
=> exit
gpssh -h sdw22 -h sdw23 -h sdw24
=> echo server ntp.citicsinfo.com >> /etc/ntp.conf
=> service ntpd stop
=> service ntpd start
=> exit
  • 新增加的机器操作系统版本与已有机器不一致,可忽略
20150520:15:49:15:038134 gpcheck:mdw:root-[ERROR]:-GPCHECK_ERROR host(sdw27): uname -r output different among hosts: sdw25 : 2.6.32-220.el6.x86_64 != sdw27 : 2.6.32-431.el6.x86_64

检查新节点的性能

gpcheckperf -f /home/gpadmin/20150523exp/newnodes -d /data1 -d /data2 -d /data3 -d /data4 -v

检查结果中只要IO都在1GB/s左右,就没有问题

生成扩容所需的输入文件

su - gpadmin
cd /home/gpadmin/20150523exp
gpexpand -f /home/gpadmin/20150523exp/newhosts -D dw

输入两个Y,再输入两个回车;生成文件类似如下名称:gpexpand_inputfile_20150520_161055

数据备份

pg_dump -f /data/dailybak/dw-nodata-$(date +%Y%m%d%H%M%S) -v -F c -C --inserts -s databasename

如果需要恢复,使用如下语句:

pg_restore -F c -d databasename -v -h mdw -p 5432 /data/dailybak/dw####_nodata
时间: 2024-10-13 09:51:45

Greenplum数据库扩容实务(上)-准备工作的相关文章

Greenplum数据库升级实务(上)

任何系统的升级都有个量变到质变的过渡:版本相差小的时候,通常很简单,版本相差大的时候,就是一场噩梦.不过版本相差小的时候,大伙儿往往安于现状.本文实际记录从GP4.2.7.2到4.3.5.0的升级过程,从版本号看相差不大,但是GP的版本命名中,第二位的变化就已经是大升级了.另需说明的是,本文升级的GP数据库规模不小,用户较多,管理混沌,在加上GP实在是有点儿脆弱(相比oracle等),所以遇到了较多元数据问题(请参加前4篇). 起点 数据库版本:Greenplum Database 4.2.7.

Python脚本访问Greenplum数据库安装指导

安装前准备 (1)操作系统(系统上面要安装一些必备的开发工具(比如gcc等)) linux-82:/home/PyODBC # cat/etc/SuSE-release SUSE Linux EnterpriseServer 11 (x86_64) VERSION = 11 PATCHLEVEL = 1 (2)安装所需的软件包 greenplum-connectivity-4.3.0.0-build-2-SuSE10-x86_64.zip --GP官网下载,GP的JDBC和ODBC驱动 pyod

Perl脚本访问Greenplum数据库安装指导

安装前准备 (1)操作系统(系统上面要安装一些必备的开发工具(比如gcc等)) linux-82:/home/PlODBC # cat/etc/SuSE-release SUSE Linux EnterpriseServer 11 (x86_64) VERSION = 11 PATCHLEVEL = 1 (2)安装所需的软件包 greenplum-connectivity-4.3.0.0-build-2-SuSE10-x86_64.zip --GP官网下载,GP的JDBC和ODBC驱动 DBI-

Greenplum 数据库架构分析

Greenplum 数据库是最先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包括数据仓库.商务智能(OLAP)和数据挖掘等.自2015年10月正式开源以来,受到国内外业内人士的广泛关注.本文就社区关心的Greenplum数据库技术架构进行介绍. 一. Greenplum数据库简介 大数据是个炙手可热的词,各行各业都在谈.一谈到大数据,好多人认为就是Hadoop.实际上Hadoop只是大数据若干处理方案中的一个.现在的SQL.NoSQL.NewSQL.Hadoop等等,都能在不同层

开源大数据引擎:Greenplum 数据库架构分析

Greenplum 数据库是最先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包含数据仓库.商务智能(OLAP)和数据挖掘等.自2015年10月正式开源以来.受到国内外业内人士的广泛关注.本文就社区关心的Greenplum数据库技术架构进行介绍. 一. Greenplum数据库简单介绍 大数据是个炙手可热的词.各行各业都在谈.一谈到大数据,好多人觉得就是Hadoop.实际上Hadoop仅仅是大数据若干处理方案中的一个.如今的SQL.NoSQL.NewSQL.Hadoop等等.都能在

浅谈数据库扩容方案

起因 每一个项目都是由小项目发展而来,从最初的一台数据库,到后面的几千上万台数据库,这发展的过程,我们都要涉及到一个技术问题:当数据量太大的时候,如何进行扩容? 案例 小明现在负责一个站点,用户数据库有2个,网站用户数据通过ID取模,分别存在两台用户数据库中,现在数据增大,两台数据库已经不够用了,现在需要增加数据库进行扩容,小明应该如何进行扩容? 方案 停机扩容 平滑扩容 停机扩容 我们先来了解下停机扩容方案,这是一种很多人初期都会使用的方案(几台数据库的时候),具体步骤: 小明先挂公告,告诉大

MPP - GreenPlum数据库安装以及简单使用

一.集群介绍 共3台主机,ip 为193.168.0.93   193.168.0.94  193.168.0.95 集群对应master和segment如下,193.168.0.93为master节点.193.168.0.94  193.168.0.95为segment节点,每个segment节点配置两个primary segment和两个mirror segment(也可以为master做一个备份,目前没有做) 架构图入下 二.服务器修改(all host) 2.1配置hosts vi /e

GreenPlum 数据库创建用户、文件空间、表空间、数据库

前几篇文章介绍了GreenPlum数据库的安装.启动.关闭.状态检查.登录等操作,数据库已经创建好了,接下来介绍如何使用数据库.按照习惯,需要先创建测试用户.表空间.数据库.先创建测试用户dbdream. view source 1 postgres=# create role dbdream password 'dbdream' createdb login; 2 NOTICE:  resource queue required -- using default resource queue

架构组件:基于Shard-Jdbc分库分表,数据库扩容方案

一.数据库扩容 1.业务场景 互联网项目中有很多"数据量大,业务复杂度高,需要分库分表"的业务场景. 这样分层的架构 (1)上层是业务层biz,实现业务逻辑封装: (2)中间是服务层service,封装数据访问: (3)下层是数据层db,存储业务数据: 2.扩容场景和问题 当数据量持续新增,面临着这样一些需求,两台数据库无法容纳,需要数据库扩容,这里选择2台-扩容到3台的模式,如下图: 这样扩容的问题 (1)分库分表的策略导致数据迁移量大: (2)影响数据的持续服务性: (3)指定时间