gpinitsystem
使用gpinitsystem_config
文件中指定的配置参数初始化一个Greenplum数据库系统。
概要
gpinitsystem -c cluster_configuration_file
[-h hostfile_gpinitsystem]
[-B parallel_processes]
[-p postgresql_conf_param_file]
[-s standby_master_host
[-P standby_master_port]
[-S standby_master_datadir | --standby_datadir=standby_master_datadir]]
[-m number | --max_connections=number]
[-b size | --shared_buffers=size]
[-n locale | --locale=locale] [--lc-collate=locale]
[--lc-ctype=locale] [--lc-messages=locale]
[--lc-monetary=locale] [--lc-numeric=locale]
[--lc-time=locale] [-e password | --su_password=password]
[--mirror-mode={ group|spread}] [-a] [-q] [-l logfile_directory] [-D]
[-I input_configuration_file]
[-O output_configuration_file]
gpinitsystem -v | --version
gpinitsystem -? | --help
描述
gpinitsystem
工具将使用配置文件中定义的值和客户提供的命令行选项
创建一个Greenplum数据库实例。
有关配置文件的更多信息,请参见初始配置文件格式。在
运行此工具之前,请确保已经在阵列中所有主机上安装了Greenplum数据库软件。
带有-O output_configuration_file
选项时,
gpinitsystem
不会创建一个新数据库,而是把所有的配置都写入一个配置文件。
该文件使用QD_PRIMARY_ARRAY
和
PRIMARY_ARRAY
参数来定义每个成员相关的主机名、端口号、数据目录、Segment前缀、
Segment ID和Content ID。集群配置的详细信息可以根据需要修改,以匹配Greenplum数据库备份中的可用值,
活着可以简单的被用来重建相同集群配置。使用QD_PRIMARY_ARRAY
和
PRIMARY_ARRAY
的配置文件必须被传递给gpinitsystem
-I
input_configuration_file
。
详细信息请见初始配置文件格式。
在Greenplum数据库DBMS中,必须在系统中的所有主机上初始化每个数据库实例(Master和所有的Segment),
以便它们可以作为统一的DBMS一起使用。gpinitsystem
工具负责初始化Greenplum的
Master和每个Segment实例,并作为一个整体配置系统。
在运行gpinitsystem
之前,用户必须设置$GPHOME
环境变量以
指向Master上的Greenplum数据库安装位置,并且使用gpssh-exkeys
在阵列中的
所有主机地址之间交换SSH密钥。
这个工具执行以下任务:
- 验证配置文件中参数的正确。
- 确保可以建立到每个主机地址的连接。如果主机地址无法到达,该工具将退出。
- 验证区域设置。
- 显示将要使用的配置并提示用户进行确认。
- 初始化Master实例。
- 初始化后备Master实例(如果指定)。
- 初始化主Segment实例。
- 初始化镜像Segment实例(如果配置)。
- 配置Greenplum数据库系统并检查错误。
- 启动Greenplum数据库系统。
Note: 该工具在系统内部采用SSH连接执行各项操作任务。在大型Greenplum集群、云部署或每台主机部署了大量的
segment实例时,可能会遇到超过主机最大授权连接数限制的情况。此时需要考虑更新SSH配置参数MaxStartups
以提高该限制。更多关于SSH配置的选项,请参考您的Linux分发版的SSH文档。
选项
-a 不提示用户进行确认。 -B parallel_processes
要并行创建的Segment数。如果未指定,该工具一次最多启动4个并行进程。 -c cluster_configuration_file
必需。配置文件的完整路径和文件名称,其中包括所有已经定义的参数,用于配置和初始化新的
Greenplum数据库系统。有关此文件的说明,请参见初始配置文件格式初始化配置文件格式。gpinitsystem
必须指定
-c cluster_configuration_file
选项或
-I input_configuration_file
选项。
-D
设置日志输出等级为debug。
-h hostfile_gpinitsystem
可选。包含Segment主机地址的文件的完整路径和文件名。如果未在命令行中指定,则可以使用
gpinitsystem_config文件中的MACHINE_LIST_FILE
参数指定主机文件。
-I input_configuration_file
配置文件的全路径及文件名,该文件使用QD_PRIMARY_ARRAY
和
PRIMARY_ARRAY
参数定义Greenplum数据库成员和Segment实例。
该配置文件通常用gpinitsystem -O
output_configuration_file
生成。
gpinitsystem
必须指定
-c cluster_configuration_file
选项或
-I input_configuration_file
选项。
-n locale | --locale=locale
设置Greenplum数据库使用的默认区域。如果未指定,则Master主机的
LC_ALL
、LC_COLLATE
或
LANG
环境变量决定区域。如果这些没有设置,则
默认的区域是C
(POSIX
)。
区域标识符由语言标识符、地区标识符和可选的字符集编码组成。例如,
sv_SE
是瑞典语,en_US
是美国英语,
fr_CA
是加拿大法语。如果不止一个字符集可以用
于一个区域,则规范如下所示:en_US.UTF-8
(区域规范和字符集编码)。在大多数系统中,命令locale
将显示区域环境设置,locale -a
将会显示所有可用的区域的列表。
--lc-collate=locale
类似于--locale
,但是设置用于排序规则(排序数据)的区域。
Greenplum数据库初始化后无法更改排序顺序,因此有必要选择与用户计划用于数据的
字符集编码兼容的排序规则区域。C
或POSIX
有一个特殊的排序规则名称(字节顺序排序而不是字典顺序排序)。C
排序规则可以用于任何字符编码。
--lc-ctype=locale
类似于--locale
,但设置用于字符分类的语言环境
(哪些字符序列是有效的,以及它们如何被解释)。在Greenplum数据库初始化
之后,这是不能更改的,因此有必要选择一个与用户计划存储在Greenplum数据库
中的数据兼容的字符分类区域。
--lc-messages=locale
类似于--locale
,但设置用于Greenplum数据库输出消息的语言环境。
当前版本的Greenplum数据库不支持输出消息的多种区域(所有消息均为英文),所以更改此
设置不会有任何效果。
--lc-monetary=locale
类似--locale
,但是设置用于格式化货币金额的区域。
--lc-numeric=locale
类似--locale
,但是设置用于格式化数字的区域。
--lc-time=locale
类似--locale
,但设置用于格式化日期和时间的区域。
-l logfile_directory
写入日志文件的目录,默认为~/gpAdminLogs
。
-m number | --max_connections=number 设置Master允许的最大客户端连接数。默认值是250。 -O output_configuration_file
当使用-O
选项时,gpinitsystem
不会创建一个
新的Greenplum集群,而是会将提供的集群配置信息写入指定的
When used with the option,
does not create a new Greenplum Database cluster but instead writes the
supplied cluster configuration information to the specified
output_configuration_file
文件。
该文件使用QD_PRIMARY_ARRAY
和
PRIMARY_ARRAY
参数来定义每个成员相关的主机名、端口号、数据目录、Segment前缀、
Segment ID和Content ID。集群配置的详细信息可以根据需要修改,以匹配Greenplum数据库备份中的可用值,
活着可以简单的被用来重建相同集群配置。使用QD_PRIMARY_ARRAY
、
PRIMARY_ARRAY
和MIRROR_ARRAY
的配置文件必须被传递给
gpinitsystem
-I
input_configuration_file
以初始化集群。
-p postgresql_conf_param_file
可选。包含用户想要为Greenplum数据库设置的postgresql.conf
参数
设置的文件名称。这些设置将在初始化单个Master和Segment实例时使用。 用户也可以在
初始化后使用gpconfig
工具来设置参数。
-q
以静默模式运行。命令行输出不显示在屏幕上,但仍然写入日志文件。
-b size | --shared_buffers=size
设置Greenplum服务器实例用于共享内存缓冲区的内存量。用户可以指定以千字节(KB)、 兆字节(MB)或千兆字节(GB)为单位的大小。默认值是125MB。 -s standby_master_host
可选。如果用户希望配置备份Master主机,请使用此选项指定主机名称。 Greenplum数据库 软件必须已经在该主机上安装和配置。 -P standby_master_port
如果使用-s
配置了备用Master实例,可以用该选项定义端口号。
默认端口号与Master端口号相同。为了在同一主机上运行备用和主Master,必须使用该选项
指定一个不同的端口号。Greenplum数据库软件必须已经在备用主机上安装和配置好。
-S standby_master_datadir |
--standby_dir=standby_master_datadir
如果使用-s
配置备用Master主机,可以使用该选项指定数据目录。
如果在同一台主机上配置备用Master和主Master实例,那必须定义该选项以指定不同的目录。
-e superuser_password |
--su_password=superuser_password
使用此选项可指定为Greenplum数据库超级用户帐户(例如gpadmin
)设置的密码。
如果未指定此选项,则默认密码gparray
会分配给超级用户。用户以后可以使用
ALTER ROLE
命令更改密码。
推荐的最佳安全实践:
- 不要生产环境中使用默认密码选项。
- 安装之后立即更改密码。
--mirror_mode={ group|spread}
使用该选项指定镜像Segment实例所在的镜像主机。默认采用group
模式,
会将一台主机上的所有主Segment实例的镜像放到另外一台主机。
spread
会将一台主机上的所有实例散布在另外的主机上。
spread
仅在集群主机数量大于每台主机上的实例数量时可用。
有关Greenplum数据库镜像策略的详细信息,请见Segment镜像概述。
-v | --version
显示gpinitsystem
的版本。
-? | --help
显示gpinitsystem
命令行参数,然后退出。
初始配置文件格式
gpinitsystem
需要定义有以下参数的配置文件。示例初始化配置文件可以在
$GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config
中找到。
为了避免Greenplum数据库和其他应用程序之间的端口冲突,Greenplum数据库端口号不应该在操作系统
参数net.ipv4.ip_local_port_range
指定的范围之内。例如,如果
net.ipv4.ip_local_port_range = 10000 65535
,则可以将Greenplum
数据库基本端口号设置为以下这些值。
PORT_BASE = 6000
MIRROR_PORT_BASE = 7000
ARRAY_NAME
必需。用户正在配置的阵列的名称。用户可以使用任何用户喜欢的名字。 如果名称包含空格,请将名称放在引号中。 MACHINE_LIST_FILE
可选。可以用来替代-h
选项。这指定包含构成Greenplum数据库系统
的Segment主机地址名称列表的文件。Master主机被假定为运行该工具的主机,并且不应该被包含在
此文件中。如果用户的Segment主机有多个网络接口,则该文件将包含该主机的所有地址。给出该文件
的绝对路径。
SEG_PREFIX
必需。这指定了一个前缀,用于命名Master和Segment实例上的数据目录。
Greenplum数据库系统中数据目录的命名约定是SEG_PREFIXnumber,
其中number对Segment实例从0开始(Master始终为-1)。因此,
如果用户选择前缀gpseg
,则用户的Master实例数据目录将会被命名为
gpseg-1
,并且Segment实例将被命名为gpseg0
、
gpseg1
、gpseg2
、gpseg3
等等。
PORT_BASE
必需。这指定计算主Segment端口用到的基础数字。主机上的第一个主Segment端口被设置为
PORT_BASE
,然后对该主机上的每个额外主Segment都加一,有效值为1-65535。
DATA_DIRECTORY
必需。这指定工具将创建主Segment数据目录的数据存储位置。列表中的位置数量决定了
每台物理主机将创建的主Segment的数量(如果主机文件中列出了主机的多个地址,Segment的数量
将被均匀分布在指定的接口地址间)。如果用户希望在同一位置创建数据目录,则可以多次列出相同
的数据存储区域。运行gpinitsystem
的用户(例如,gpadmin
用户)
必须具有写入这些目录的权限。例如,这将为每台主机创建六个主Segment:
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary
/data1/primary /data2/primary /data2/primary /data2/primary)
MASTER_HOSTNAME
必需。 Master实例的主机名。这个主机名必须与机器上配置的主机名完全匹配
(运行hostname
命令以确定正确的主机名)。
MASTER_DIRECTORY
必需。这指定在Master主机上创建数据目录的位置。用户必须确保运行gpinitsystem
的用户(例如gpadmin
用户)有权写入此目录。
MASTER_PORT
必需。Master实例的端口号。这是访问Greenplum数据库系统时用户和客户端连接将 使用的端口号。 TRUSTED_SHELL
必需。gpinitsystem
工具用来在远程主机上执行命令的shell。
允许的值为ssh
。用户必须在运行gpinitsystem
工具之前设置用户的可信主机环境(用户可以使用gpssh-exkeys
来做这件事)。
CHECK_POINT_SEGMENTS
必需。日志文件段(每个段通常为16兆字节)中自动预写式日志(WAL)检查点之间的最大距离。
这将在Greenplum数据库系统的每个Segment实例的postgresql.conf
文件中
设置checkpoint_segments
参数。
ENCODING
必需。要使用的字符集编码。该字符集必须与所使用的--locale
设置兼容,
尤其是--lc-collate
和--lc-ctype
。Greenplum数据库
支持和PostgreSQL相同的字符集。
DATABASE_NAME
可选。系统初始化之后要创建的Greenplum数据库的名称。用户可以随后使用
CREATE DATABASE
命令或createdb
工具创建数据库。
MIRROR_PORT_BASE
可选。这指定计算镜像Segment端口号用到的基数。主机上的第一个镜像Segment端口设置为
MIRROR_PORT_BASE
,然后对该主机上每个额外的镜像Segment加一。有效值范围
从1到65535,不能与PORT_BASE
计算的端口冲突。
MIRROR_DATA_DIRECTORY
可选。指定工具将创建镜像Segment数据目录的数据存储位置。必须为镜像Segment
实例声明与主Segment实例相同数量的数据目录(请参阅DATA_DIRECTORY
参数)。
运行gpinitsystem
的用户(例如,gpadmin
用户)
必须具有写入这些目录的权限。例如:
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror
/data1/mirror /data1/mirror /data2/mirror /data2/mirror
/data2/mirror)
QD_PRIMARY_ARRAY, PRIMARY_ARRAY, MIRROR_ARRAY
这些参数只能通过配置文件提供给gpinitsystem
-I input_configuration_file
。
QD_PRIMARY_ARRAY
、PRIMARY_ARRAY
和
MIRROR_ARRAY
定义Greenplum数据库Master主机、主实例和
镜像实例,格式如下:
host~port~data_directory/seg_prefix<segment_id>~dbid~content_id
Greenplum数据库Master会一直使用-1作为Segment ID和Content ID。例如:
QD_PRIMARY_ARRAY=127.0.0.1~5432~/gpmaster/gpsne-1~1~-1~0
declare -a PRIMARY_ARRAY=(
127.0.0.1~40000~/gpdata1/gpsne0~2~0
127.0.0.1~40001~/gpdata2/gpsne1~3~1
)
declare -a MIRROR_ARRAY=(
127.0.0.1~50000~/gpmirror1/gpsne0~4~0
127.0.0.1~50001~/gpmirror2/gpsne1~5~1
)
客户可以使用gpinitsystem
-O output_configuration_file
来生成
QD_PRIMARY_ARRAY
、PRIMARY_ARRAY
、
MIRROR_ARRAY
参数,包含主机、数据目录、Segment前缀和端
口号信息。出于恢复的目的,您可以编辑Segment和Content ID的值以匹配现存Greenplum
数据库备份的值。
HEAP_CHECKSUM
可选。该参数指定堆表的数据是否启用checksum。当启用时,所有数据库上的堆存储 进行checksum,Greenplum数据库可以预防I/O系统损坏导致数据损坏。该选项只有在系统 初始化时进行设置并且以后不能改变。
HEAP_CHECKSUM
选项默认启用,强烈不建议将该选项设置为禁用。
如果禁用该选项,存储的数据损坏不会被检测到,数据恢复会相当困难。
要检查是否Greenplum数据库启用了堆表checksum,可以通过gpconfig
管理工具查询data_checksums
参数:
$ gpconfig -s data_checksums
HBA_HOSTNAMES
可选。该参数控制gpinitsystem
工具在pg_hba.conf
中开放访问IP地址或者主机名的信息。默认值为0
,该工具会
使用IP地址更新hba文件。当初始化Greenplum数据库系统时,指定
HBA_HOSTNAMES=1
来让工具使用主机名更新
pg_hba.conf
文件。
更多有关Greenplum数据库解决pg_hba.conf
文件中主机名的信息,请见配置客户端认证。
示例
通过提供配置文件和Segment主机地址文件来初始化Greenplum数据库阵列,并设置一个散布镜像
(--mirror-mode=spread
)配置:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem --mirror-mode=spread
初始化Greenplum数据库阵列并设置超级用户远程口令:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem --su-password=mypassword
初始化带有可选后备Master主机的Greenplum数据库阵列:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem -s host09
代替初始化一个Greenplum数据库集群,将提供的配置文件信息写入到输出文件。该输出文件采用QD_PRIMARY_ARRAY
和
PRIMARY_ARRAY
参数定义Master和Segment主机:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem --mirror-mode=spread -O cluster_init.config
采用输入带有QD_PRIMARY_ARRAY
和PRIMARY_ARRAY
参数的配置文件
(该文件定义Greenplum数据库集群)初始化Greenplum数据库:
$ gpinitsystem -I cluster_init.config
另见
[gpssh-exkeys](gpssh-exkeys.html#topic1)
、
[gpdeletesystem](gpdeletesystem.html#topic1)