gpinitsystem
gpinitsystem
使用gpinitsystem_config文件中指定的配置参数初始化一个Greenplum数据库系统。
概要
gpinitsystem -c gpinitsystem_config [-h hostfile_gpinitsystem] [-B parallel_processes] [-p postgresql_conf_param_file] [-s standby_master_host] [--max_connections=number] [--shared_buffers=size] [--locale=locale] [--lc-collate=locale] [--lc-ctype=locale] [--lc-messages=locale] [--lc-monetary=locale] [--lc-numeric=locale] [--lc-time=locale] [--su_password=password] [-S] [-a] [-q] [-l logfile_directory] [-D] gpinitsystem -v
描述
gpinitsystem工具将使用配置文件中定义的值创建一个Greenplum数据库实例。有关配置文件的更多信息,请参见初始化配置文件格式。在运行此工具之前,请确保已经在阵列中所有主机上安装了Greenplum数据库软件。
在Greenplum数据库DBMS中,必须在系统中的所有主机上初始化每个数据库实例(Master和所有的Segment),以便它们可以作为统一的DBMS一起使用。gpinitsystem工具负责初始化Greenplum的Master和每个Segment实例,并作为一个整体配置系统。
在运行gpinitsystem之前,用户必须设置$GPHOME 环境变量以指向Master上的Greenplum数据库安装位置,并且使用gpssh-exkeys在阵列中的所有主机地址之间交换SSH密钥。
这个工具执行以下任务:
- 验证配置文件中参数的正确。
- 确保可以建立到每个主机地址的连接。如果主机地址无法到达,该工具将退出。
- 验证区域设置。
- 显示将要使用的配置并提示用户进行确认。
- 初始化Master实例。
- 初始化后备Master实例(如果指定)。
- 初始化主Segment实例。
- 初始化镜像Segment实例(如果配置)。
- 配置Greenplum数据库系统并检查错误。
- 启动Greenplum数据库系统。
选项
- -a
- 不提示用户进行确认。
- -B parallel_processes
- 要并行创建的Segment数。如果未指定,该工具一次最多启动4个并行进程。
- -c gpinitsystem_config
- 必需。配置文件的完整路径和文件名称,其中包括所有已经定义的参数,用于配置和初始化新的Greenplum数据库系统。有关此文件的说明,请参见初始化配置文件格式。
- -D
- 设置日志输出等级为debug。
- -h hostfile_gpinitsystem
- 可选。包含Segment主机地址的文件的完整路径和文件名。如果未在命令行中指定,则可以使用gpinitsystem_config文件中的MACHINE_LIST_FILE参数指定主机文件。
- --locale=locale | -n 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。
- --max_connections=number | -m number
- 设置Master允许的最大客户端连接数。默认值是250。
- -p postgresql_conf_param_file
- 可选。包含用户想要为Greenplum数据库设置的postgresql.conf参数设置的文件名称。 这些设置将在初始化单个Master和Segment实例时使用。 用户也可以在初始化后使用gpconfig工具来设置参数。
- -q
- 以静默模式运行。命令行输出不显示在屏幕上,但仍然写入日志文件。
- --shared_buffers=size | -b size
- 设置Greenplum服务器实例用于共享内存缓冲区的内存量。用户可以指定以千字节(KB)、兆字节(MB)或千兆字节(GB)为单位的大小。默认值是125MB。
- -s standby_master_host
- 可选。如果用户希望配置备份Master主机,请使用此选项指定主机名称。 Greenplum数据库软件必须已经在该主机上安装和配置。
- --su_password=superuser_password | -e superuser_password
- 使用此选项可指定为Greenplum数据库超级用户帐户(例如gpadmin)设置的密码。 如果未指定此选项,则默认密码gparray会分配给超级用户。用户以后可以使用ALTER ROLE命令更改密码。
推荐的最佳安全实践:
- 不要生产环境中使用默认密码选项。
- 安装之后立即更改密码。
- -S
- 如果指定了镜像参数,在可用主机上散布镜像Segment。默认情况下,将镜像Segment集合起来放在与其主Segment集合不同的后补主机上。镜像散布将每个镜像放置在Greenplum数据库阵列内的不同主机上。只有当主机数量大于Segment实例数量时,才允许进行散布。
- -v | --version
- 显示该工具的版本。
- --help
- 显示在线帮助。
初始配置文件格式
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 REPLICATION_PORT_BASE = 8000 MIRROR_REPLICATION_PORT_BASE = 9000
- 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计算的端口冲突。
- REPLICATION_PORT_BASE
- 可选。 这指定计算主文件复制进程端口号用到的基数。主机上的第一个复制端口设置为REPLICATION_PORT_BASE,然后对该主机上每个额外的主Segment加一。有效值范围从1到65535,不能与由PORT_BASE或MIRROR_PORT_BASE计算的端口冲突。
- MIRROR_REPLICATION_PORT_BASE
- 可选。 这指定计算镜像文件复制进程端口号用到的基数。主机上的第一个镜像复制端口设置为MIRROR_REPLICATION_PORT_BASE,然后对该主机上每个额外的镜像Segment加一。 有效值范围从1到65535,不能与由PORT_BASE、MIRROR_PORT_BASE或REPLICATION_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)
示例
通过提供配置文件和Segment主机地址文件来初始化Greenplum数据库阵列,并设置一个散布镜像(-S)配置:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem -S
初始化Greenplum数据库阵列并设置超级用户远程口令:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem --su-password=mypassword
初始化带有可选后备Master主机的Greenplum数据库阵列:
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem -s host09