《Greenplum企业应用实战》一第2章 Greenplum快速入门2.1 软件安装及数据库初始化

简介:

本节书摘来自华章出版社《Greenplum企业应用实战》一书中的第2章,第2.1节,作者 何勇 陈晓峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看

第2章 Greenplum快速入门

本章将介绍如何快速安装部署Greenplum,以及Greenplum的一些常用命令及工具。“工欲善其事,必先利其器”,因此我们先从如何安装Greenplum开始介绍,然后介绍一些简单的工具,以及Greenplum的语法及特性。
为了让读者更加快速地入门,避免涉及太多底层的东西。本章不会涉及硬件选型、操作系统参数讲解、机器性能测试等高级内容,这些会在“第8章Greenplum线上环境部署”中介绍。

2.1 软件安装及数据库初始化

下面先介绍如何搭建一个完整的Greenplum环境。在搭建环境之前,我们必须对Greenplum的架构有一定的了解,并且准备好安装部署的机器,机器硬件、操作系统的安装配置读者可自行完成。

2.1.1 Greenplum架构

在安装数据库的时候,我们先要对Greenplum架构有一定的了解,这样可以对数据库的安装和使用起到一个指导性的作用。同时在搭建Greenplum环境的过程中,可以加深对Grenplum架构的理解。Greenplum总体架构图如图2-1所示。

image

下面介绍每个部件的主要功能,如表2-1所示。
image

通过图2-2可以看出Master与Segment的关系。

image

Master和Segment其实都是一个单独的PostgreSQL数据库。每一个都有自己单独的一套元数据字典,在这里,Master节点一般也叫主节点,Segment也叫做数据节点。
Segment节点与Master节点的通信,通过千兆(或万兆)网卡组成的内部连接(InterConnect),在同一台数据节点机器上可以放多个Segment,不同的Segment节点会被赋予不同的端口,同时,Segment之间也不断地进行着交互。为了实现高可用,每个Segment都有对应的备节点(Mirror Segment),分别存在于不同的机器上。
Client一般只能与Master节点进行交互,Client将SQL发给Master,然后Master对SQL进行分析后,再将其分配给所有的Segment进行操作,并且将汇总结果返回给客户端。

2.1.2 环境搭建

  1. Greenplum集群介绍
    在这里的Greenplum集群中,有4台机器,IP分别是:

10.20.151.7;
10.20.151.8;
10.20.151.9;
10.20.151.10。
机器对应的Master和Segment如下分配:10.20.151.7作为Master节点,10.20.151.8~10作为Segment节点,每个机器上配置两个Primary Segment和两个Mirror Segment;同时10.20.151.10作为Master Standy节点。
通过图2-3的架构图可以清晰地知道我们所搭建的集群的概况。

image

  1. 安装Linux
    Greenplum没有Windows版本,只能安装在类UNIX的操作系统上,例如:

SUSE Linux SLES 10.2 or higher;
CentOS 5.0 or higher;
RedHat Enterprise Linux 5.0 or higher;
Solaris x86 v10 update 7。
如果读者没有现成的Linux机器,可以在虚拟机(如VMWare)上安装,用户可自行安装VMWare及对应的Linux操作系统,网上相应的资料很多,这里就不再阐述。

  1. 数据库存储
    对于数据库来说,在性能上磁盘IO很容易成为瓶颈,由于数据库的特性,每一个SQL基本都是对全表数据进行分析,每次处理的数据量非常大,数据基本上都是没有缓存的(数据字典除外),极度消耗IO资源(全表扫描主要都是顺序IO),所以Greenplum对存储的要求比较高。在文件系统的选择上,在Linux下建议使用XFS,在Solaris下建议使用ZFS,对于Raid根据需求选择硬Raid或软Raid,如果需要更大的空间,建议使用Raid 5,如果对性能有更高的要求,可以选择Raid 1+0。相关内容请参考第8章关于Greenplum线上环境部署的介绍。

如果只是想试用Greenplum,数据量比较小,那么怎么存储无所谓,可以用任意的目录作为数据库数据目录。

  1. 网络(hosts)
    在确定机器配置的时候,要保证所有机器的网络都是通的,并且每台机器的防火墙都是关闭的,避免存在网络不通的问题。

在配置/etc/hosts时,习惯将Master机器叫做mdw,将Segment机器叫做sdw,配置好后,使用ping命令确定所有hostname都是通的。

#cat /etc/hosts
#BEGIN_GROUP_CUSTOMER
127.0.0.1    localhost  localhost.localdomain
10.20.151.7     dw-greenplum-1 mdw
10.20.151.8     dw-greenplum-2 sdw1
10.20.151.9     dw-greenplum-3 sdw2
10.20.151.10    dw-greenplum-4 sdw3
#END_GROUP_CUSTOMER
  1. 创建用户及用户组
    创建gpadmin用户及用户组,将其作为安装Greenplum的操作系统用户。

将原有用户删除:

#groupdel gpadmin
#userdel gpadmin
创建新的用户和用户组:
#groupadd -g 530 gpadmin
#useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
对文件夹进行赋权,为新用户创建密码:
#chown -R gpadmin:gpadmin /home/gpadmin/
#passwd gpadmin
Changing password for user gpadmin.
New UNIX password:
Retype new UNIX password:

2.1.3 Greenplum安装

  1. 安装数据库软件
    读者可以在Greenplum官网上下载最新版本的Greenplum,下载地址是:https://network.gopivotal.com/products/pivotal-gpdb,如图2-4所示。

image

选择相应的操作系统版本,比如RedHat操作系统选择“RHEL”,下载时需要在网站上注册一个账号,如图2-5所示。
读者可以选择自己需要的版本下载,这里以正式版本Greenplum 4.1.1.1为例,介绍如何安装Greenplum。

image

Greenplum最新版本是Greenplum 4.3,但是安装方式都是一样的。
首先准备好安装文件:

greenplum-db-4.1.1.1-build-1-RHEL5-x86_64.zip

执行unzip命令解压安装文件:

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

解压后生成两个文件:

README_INSTALL;
greenplum-db-4.1.1.1-build-1-RHEL5-x86_64.bin。

为Greenplum软件创建安装目录,并且赋给gpadmin用户权限:

mkdir /opt/greenplum
chown -R gpadmin:gpadmin /opt/greenplum

执行以下命令开始安装软件:

./greenplum-db-4.1.1.1-build-1-RHEL5-x86_64.bin

屏幕上会出现License的一些信息,按“空格”键使信息显示完全,如图2-6所示。
确认License之后,接着出现如图2-7所示的信息。
输入“yes”后会提示安装目录,我们选择安装在/opt/greenplum/greenplum-db-4.1.1.1下面,如图2-8所示。

image

完成以上步骤后,软件开始自动安装。最后显示软件安装成功,安装目录如图2-9b所示。

image

Greenplum的环境变量已经在greenplum_path.sh中设置了,这里需要应用一下这个环境变量配置:

source /opt/greenplum/greenplum-db/greenplum_path.sh
  1. 配置hostlist
    配置hostlist文件,将所有的服务器名记录在里面。
[gpadmin@dw-greenplum-1 conf]$ cat hostlist 
mdw
sdw1
sdw2
sdw3

seg_hosts只保存segment节点的hostname。

[gpadmin@dw-greenplum-1 conf]$ cat seg_hosts 
sdw1
sdw2
sdw3
  1. 使用gpssh-exkeys打通所有服务器
    使用gpssh-exkeys将所有机器的通道打开,这样就不用输入密码使登录在每台机器之间跳转了,代码如下:
[gpadmin@dw-greenplum-1 conf]$ gpssh-exkeys -f hostlist 
[STEP 1 of 5] create local ID and authorize on local host
[STEP 2 of 5] keyscan all hosts and update known_hosts file
[STEP 3 of 5] authorize current user on remote hosts
  ... send to sdw1
  ***
  *** Enter password for sdw1: 
  ... send to sdw2
  ... send to sdw3
[STEP 4 of 5] determine common authentication file content
[STEP 5 of 5] copy authentication files to all remote hosts
  ... finished key exchange with sdw1
  ... finished key exchange with sdw2
  ... finished key exchange with sdw3
[INFO] completed successfully

在打通所有机器通道之后,我们就可以使用gpssh命令对所有机器进行批量操作了。

[gpadmin@dw-greenplum-1 conf]$ gpssh -f hostlist 
=> pwd
[sdw3] /home/gpadmin
[ mdw] /home/gpadmin
[sdw1] /home/gpadmin
[sdw2] /home/gpadmin
  1. 将软件分发到每一台机器上
    接下来将安装后的文件打包:
tar -cf gp4.1.tar  greenplum-db-4.1.1.1/

然后利用gpscp命令将这个文件复制到每一台机器上:

gpscp -f /home/gpadmin/conf/hostlist gp4.1.tar =:/opt/greenplum

使用gpssh命令批量解压文件包:

=> cd /opt/greenplum
[sdw3]
[ mdw]
[sdw1]
[sdw2]
=> tar -xf gp4.1.tar
[sdw3]
[ mdw]
[sdw1]
[sdw2]

建立软连接,如图2-10所示。

image

下面创建数据库数据目录。
MASTER目录:

=> mkdir -p /home/gpadmin/gpdata/gpmaster

Primary节点目录:

=> mkdir -p /home/gpadmin/gpdata/gpdatap1
=> mkdir -p /home/gpadmin/gpdata/gpdatap2

Mirror节点目录:

=> mkdir -p /home/gpadmin/gpdata/gpdatam1
=> mkdir -p /home/gpadmin/gpdata/gpdatam2

Gpmaster目录保存Master的数据,每个机器上的gpdatap1、gpdatap2分别对应这个机器上的两个主数据节点目录,同样的,gpdatam1、gpdatam2对应备数据节点目录。

  1. 配置~/.bash_profile
    要对系统的环境变量进行配置,需要修改~/.bash_profile,添加以下内容:
source /opt/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=2345
export PGDATABASE=testDB

其中greenplum_path.sh保存了运行Greenplum的一些环境变量设置,包括GPHOME、PYTHONHOME等设置。

  1. 初始化Greenplum的配置文件
    配置文件的模板可以在$GPHOME/docs/cli_help/gpconfigs/目录下找到。gpinitsystem_config文件是初始化Greenplum的模板,在这个模板中,Mirror Segment的配置都被注释掉了,模板中基本初始化数据库的参数都是有的。

下面是初始化的配置文件initgp_config。

#数据库的代号
ARRAY_NAME="Greenplum" 
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts 
#Segment的名称前缀
SEG_PREFIX=gpseg 
#Primary Segment起始的端口号
PORT_BASE=33000 
#指定Primary Segment的数据目录
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)
#Master所在机器的Hostname
MASTER_HOSTNAME=mdw
#指定Master的数据目录
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster 
#Master的端口
MASTER_PORT=2345
#指定Bash的版本
TRUSTED_SHELL=/usr/bin/ssh
#字符集ENCODING=UNICODE
#Mirror Segment起始的端口号
MIRROR_PORT_BASE=43000
#Primary Segment主备同步的起始端口号
REPLICATION_PORT_BASE=34000
#Mirror Segment主备同步的起始端口号
MIRROR_REPLICATION_PORT_BASE=44000
#Mirror Segment的数据目录
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)
  1. 初始化数据库
    使用gpinitsystem脚本来初始化数据库,命令如下:
gpinitsystem -c initgp_config  -s sdw3

根据脚本出现的提示操作即可,如图2-11所示。
image

这样,数据库就初始化成功了,尝试登录Greenplum默认的数据库postgres:

[gpadmin@dw-greenplum-1 ~]$ psql -d postgres
psql (8.2.15)
Type "help" for help.

  postgres=#

2.1.4 创建数据库

现在我们开始创建测试数据库:

createdb testDB -E utf-8

没有设置PGDATABASE这个环境变量时,使用psql进行登录,默认的数据库是与操作系统用户名一致的,这时候会报错:
[gpadmin@dw-greenplum-1 ~]$ psql
psql: FATAL: database "gpadmin" does not exist
然后设置(export)环境变量PGDATABASE=testDB,这样就默认登录testDB数据库:

[gpadmin@dw-greenplum-1 ~]$ export PGDATABASE=testDB 
[gpadmin@dw-greenplum-1 ~]$ psql
psql (8.2.15)
Type "help" for help.

testDB=#

查询数据库版本并创建一张简单的表:

testDB=# select version();
version
----------------------------------------------------------
 PostgreSQL 8.2.15 (Greenplum Database 4.1.1.1 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on May 12 2011 18:07:08
(1 row)

testDB=# create table test01(id int primary key,name varchar(128));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test01_pkey" for table "test01"
CREATE TABLE

2.1.5 数据库启动与关闭

  1. 启动数据库
    Greenplum提供一系列的脚本来管理数据库,其中gpstart就是启动数据库的脚本,我们可以用gpstart –help来查看帮助,例如:
[gpadmin@inc-dw-hadoop-151-7 ~]$ gpstart --help
COMMAND NAME: gpstart
Starts a Greenplum Database system.

*****************************************************
SYNOPSIS
*****************************************************
gpstart [-d <master_data_directory>] [-B <parallel_processes>] 
        [-R] [-m] [-y] [-a] [-t <timeout_seconds>] 
        [-l logfile_directory] [-v | -q]
gpstart -? | -h | --help
gpstart --version

一般用gpstart -a直接启动数据库,不用输入“yes”,如图2-12所示。

image

  1. 关闭数据库
    关闭数据库的脚本是gpstop,其使用方法如下:
COMMAND NAME: gpstop
Stops or restarts a Greenplum Database system.
*****************************************************
SYNOPSIS
*****************************************************
gpstop [-d <master_data_directory>] [-B <parallel_processes>] 
       [-M smart | fast | immediate] [-t <timeout_seconds>]
       [-r] [-y] [-a] [-l <logfile_directory>] [-v | -q]
gpstop -m [-d <master_data_directory>] [-y] [-l <logfile_directory>] 
       [-v | -q]
gpstop -u [-d <master_data_directory>] [-l <logfile_directory>] 
          [-v | -q] 
gpstop --version
gpstop -? | -h | --help

与gpstart一样,在关闭数据库时,一般使用gpstop -a,这样就不用输入“yes”了,如图2-13所示。

image

相关文章
|
1天前
|
NoSQL 关系型数据库 分布式数据库
PolarDB图数据库快速入门
图数据库(Graph Database)专门存储图数据,适合处理社交网络、知识图谱等复杂关系。它使用图查询语言(如Cypher、Gremlin)进行操作。PolarDB兼容OpenCypher语法,支持创建、查询、更新和删除图数据,包括模式匹配、过滤、MERGE避免重复、可视化工具等功能,简化了图数据的管理和应用。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
数据库连接 数据库 数据安全/隐私保护
网站初始化数据库错误
网站初始化数据库错误
|
2月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
95 0
|
4月前
|
存储 SQL 监控
ADBPG&Greenplum成本优化问题之ADB PG的数据库管控的定义如何解决
ADBPG&Greenplum成本优化问题之ADB PG的数据库管控的定义如何解决
49 2
|
4月前
|
SQL 存储 监控
ADBPG&Greenplum成本优化问题之通过SQL查询找到数据库中所有的复制表如何解决
ADBPG&Greenplum成本优化问题之通过SQL查询找到数据库中所有的复制表如何解决
42 1
|
4月前
|
存储 Serverless API
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
33 0
|
4月前
|
安全 关系型数据库 MySQL
MySQL非root安装-初始化数据库时unknown variable ‘defaults-file=**/my.cnf‘
解决安装过程中出现的问题通常需要仔细地检查错误日志、配置文件和执行命令,保证各项配置设置的精确无误是顺利完成安装的关键。通过上述的步骤分析和解决方案,非root用户安装MySQL时遇到"unknown variable 'defaults-file=**/my.cnf'"的问题应该可以得到妥善的解决。
442 0