Initialize Greenplum System

2018-02-01

初始化Greenplum

Greenplum系统是由多个PostgreSQL数据库组成的分布式数据库系统
Greenplum提供了自己的初始化方法gpinitsystem来初始化集群
gpinitsystem需要提供所有segment主机的hostname
gpadmin用户新建一个hostfile_init文件,包含所有的segment主机
(本文不涉及NIC绑定)

接下来新建一个初始化配置文件gpinitsystem_config
可以从$GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config复制一份配置文件
自行修改相应内容

1
2
3
4
5
6
7
8
9
10
11
ARRAY_NAME="EMC Greenplum DW"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary
/data1/primary /data2/primary /data2/primary /data2/primary)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE

这些是segment配置
SEG_PREFIX用于为master和segment实例命名的前缀,master的编号为-1,segment编号从0开始
PORT_BASE是Greenplum系统segmentz主机所用的基准端口
DATA_DIRECTORY指定segment数据的存放路径,路径数目决定了每个host的segment数量,可以存放于相同路径下
MASTER_HOSTNAME是master的hostname
MASTER_DIRECTORY为之前创建的master存储目录
ENCODING应按照需要修改,比如zh_CN.UTF-8

如果要使用mirror,添加以下配置:

1
2
3
4
MIRROR_PORT_BASE=50000
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)

MIRROR_DATA_DIRECTORY是mirror路径,同时决定了mirror数量,必须和segment数量一致

通过gpinitsystem -S初始化mirror使用的应是Spread Segment Mirroring方案
由于mirror数量必须和segment保持一致,在启用mirror时,必须确定所有segment主机的数量,大于每台segment主机上segment的数量
每台segment主机上的segmet数量由DATA_DIRECTORY中路径的数量决定
因此,如果主机数量不比segment多,就不能使用gpinitsystem -S初始化mirror,可以在初始化Greenplum系统之后手动添加mirror
并且在要手动配置mirror又要添加standby master时
要先添加segment mirror再添加master mirror(即standby master)

然后运行:

1
$ gpinitsystem -c /path/to/gpinitsystem_config -h /path/to/hostfile_init -s standby_master -S

小写s表示具有standby master主机,大写S表示启用spread mirror
不添加standby master和mirror则不用添加这两个选项
gpinitsystem将会首先检验和各个主机的连接,并检验配置,全部通过后将询问用户确认初始化

1
=> Continue with Greenplum creation? Yy/Nn

如果没有遇到任何问题,则安装成功
官网说会显示:

1
=> Greenplum Database instance successfully created.

该信息并不是在最后一行,要往上翻,查看一下输出记录
也可以在日志中查看

gpinitsystem官方文档

Greenplum的日志在/home/gpadmin/gpAdminLogs目录下

手动添加mirror

The gpaddmirrors utility configures mirror segment instances for an existing Greenplum Database system that was initially configured with primary segment instances only.

gpaddmirrors只能为刚初始化的主segment实例添加mirror
如果不添加任何选项参数,配置mirror的过程中会根据每台主机的segment要求提供存放mirror的路径
该路径不可以和segment路径一样,要放在不同的路径中
可以通过-i来使用自己的mirror路径文件:

1
2
3
4
5
filespaceOrder=
mirror0=0:sdw1-1:52001:53001:54001:/gpdata/mir1/gp0
mirror1=1:sdw1-2:52002:53002:54002:/gpdata/mir2/gp1
mirror2=2:sdw2-1:52001:53001:54001:/gpdata/mir1/gp2
mirror3=3:sdw2-2:52002:53002:54002:/gpdata/mir2/gp3

以上配置为两个segment主机,分别配置两个segment,两个mirror
sdw*为目标主机,可以指定专门的主机来存放mirror
中间52001:53001:54001为mirror的端口号
最后一部分为路径名

暂未了解分配机制,不知道会不会将相同的主机分配给primary segment和其mirror segment

添加mirror指令为:

1
gpaddmirrors -i /path/to/mirror_config_file

详细查看gpaddmirrors官方文档

手动添加standby master

手动添加(或初始化)standby master只需要一条指令:

1
gpinitstandby -s host_name

如果已经有一个standby master,要先用-r选项移除

如果之前进行standby master初始化失败,要先删除目标host上master数据目录下的内容,否则会导致失败
失败日志会保存在standby master的/tmp目录下

详细查看gpinitstandby官方文档

授权远程连接

$MASTER_DATA_DIRECTORY/pg_hba.conf文件末尾,添加:

1
host    all     all     0.0.0.0/0       md5

表示开放所有数据库,所有端口给所有用户
可以指定ip及用户

gpadmin远程连接

使用gpadmin用户远程连接时,如果使用默认的密码登陆会被拒绝。
修改密码后可以登陆。

提示Out of Sync

执行:

1
yum search rsync

搜索rsync
安装rsynclibrsync以及librsync-devel

AU cover

..-. . -.