gpaddmirrors

gpaddmirrors

将镜像Segment添加到最初没有配置镜像的Greenplum数据库系统。

概要

gpaddmirrors [-p port_offset] [-m datadir_config_file [-a]] [-s] 
                [-d master_data_directory] [-B parallel_processes] [-l logfile_directory]
                [-v]
                
                gpaddmirrors -i mirror_config_file [-a] [-d master_data_directory]
                [-B parallel_processes] [-l logfile_directory] [-v]
                
                gpaddmirrors -o output_sample_mirror_config [-s] [-m datadir_config_file]
                
                gpaddmirrors -? 
                
                gpaddmirrors --version

描述

gpaddmirrors工具为初始仅配置了主Segment实例的现有Greenplum数据库系统配置镜像 Segment实例。该工具创建镜像实例并开始主Segment实例和镜像Segment实例之间的在线复制进程。一旦所有 的镜像与其主Segment同步好,用户的Greenplum数据库系统就建立了完全的数据冗余。

Important: 在在线复制进程中,Greenplum数据库应处于静止状态,负载和其他查询不应该运行。

默认情况下,该工具将提示用户输入将创建镜像Segment数据目录的文件系统位置。如果用户不想被提示, 可以使用-m选项传递包含文件系统位置的文件。

镜像位置和端口必须与用户的主Segment数据位置和端口不同。如果用户创建了额外的文件空间,则还将提示用户 为每个文件空间提供镜像位置。

该工具使用预定义的命名习惯在指定位置中为每个镜像Segment实例创建唯一的数据目录。必须为镜像Segment 实例声明与主Segment实例相同数量的文件系统位置。如果用户希望在同一位置创建镜像数据目录,可以多次 指定同样的目录名称,或者可以为每个镜像输入不同的数据位置。对于文件系统位置,请输入绝对路径。例如:

Enter mirror segment data directory location 1 of 2 > /gpdb/mirror
                Enter mirror segment data directory location 2 of 2 > /gpdb/mirror

Enter mirror segment data directory location 1 of 2 > /gpdb/m1
                Enter mirror segment data directory location 2 of 2 > /gpdb/m2

还有,用户可以运行gpaddmirrors工具,并使用-i选项提供详细的 配置文件。如果用户希望镜像Segment位于完全不同于主Segment的主机集合上,这非常有用。镜像配置文件的 格式是:

mirror<row_id>=<contentID>:<address>:<port>:<data_dir>

此处row_id是文件中的行号,contentID是segment实例的content_id, address是segment所在的主机名或IP地址,port是交互端口, data_dir是segment实例数据目录。

例如:
mirror0=0:sdw1-1:60000:/gpdata/mir1/gp0
                    mirror1=1:sdw1-1:60001:/gpdata/mir2/gp1

gp_segment_configuration系统目录表可以帮助用户确定当前的主Segment配置, 以便用户可以规划镜像Segment配置。例如,运行以下的查询:

=# SELECT dbid, content, address as host_address, port, datadir 
                   FROM gp_segment_configuration
                   ORDER BY dbid;

如果在后补的镜像主机上创建镜像,则新的镜像Segment主机必须预先安装Greenplum数据库软件,并且被配置为 与现有的主Segment主机完全相同。

用户必须确保运行gpaddmirrors的用户(gpadmin用户)有权在指定 的数据目录位置写入。用户可能想要在Segment主机上创建这些目录并且在运行gpaddmirrors 之前将这些目录的拥有者改为(chown)适当的用户。

Note: 该工具在系统内部采用SSH连接执行各项操作任务。在大型Greenplum集群、云部署或每台主机部署了大量的 segment实例时,可能会遇到超过主机最大授权连接数限制的情况。此时需要考虑更新SSH配置参数MaxStartups 以提高该限制。更多关于SSH配置的选项,请参考您的Linux分发版的SSH文档。

选项

-a(不提示)
以静默模式运行 - 不提示输入信息。如果使用这一选项,必须使用-m或-i提供一个配置文件。
-B parallel_processes
并行启动的镜像设置进程的数量。如果未指定,则该工具将启动最多10个并行进程,具体取决于需要 设置多少个镜像Segment实例。
-d master_data_directory
主数据目录。如果没有指定,将使用为$MASTER_DATA_DIRECTORY设置的值。
-i mirror_config_file
一个配置文件,每个要创建的镜像Segment对应一行。用户必须为系统中的每个主Segment都在该 文件中列出一个镜像Segment。该文件格式如下(如gp_segment_configuration 目录表中的每个属性):
mirror<row_id>=<contentID>:<address>:<port>:<data_dir>

此处row_id是文件中的行号,contentID是segment实例的content_id, address是segment所在的主机名或IP地址,port是交互端口, data_dir是segment实例数据目录。

-l logfile_directory
用来写日志的目录,默认为~/gpAdminLogs
-m datadir_config_file
包含将创建镜像数据目录的文件系统位置列表的配置文件。如果未提供,该工具将提示用户输入位置。 文件中的每一行都指定一个镜像数据目录位置。例如:
/gpdata/m1
                            /gpdata/m2
                            /gpdata/m3
                            /gpdata/m4
-o output_sample_mirror_config
如果用户不确定如何布置-i选项使用的镜像配置文件,用户使用这一选项运行 gpaddmirrors来生成一个基于主Segment配置的镜像配置文件示例。该工具 将提示用户输入用户的镜像Segment数据目录位置(除非用户使用-m在一个文件 中提供了这些位置)。然后,用户可以编辑此文件根据需要将主机名更改为后补的镜像主机。
-p port_offset
可选。这个数字被用于计算用于镜像Segment的数据库端口和复制端口。默认偏移量为1000。 镜像端口分配计算如下:
主机端口 + 偏移量 = 镜像数据库端口
例如,如果主Segment的端口为50001,则默认情况下,其镜像将使用数据库端口51001。
-s(散布镜像)
在可用主机上散布镜像Segment。默认情况下,将把一组镜像Segment集合在一起放在不同于其 主Segment集合的后补主机上。镜像散布将把每个镜像放置在Greenplum数据库阵列中的不同主机上。 只有在阵列中有足够数量的主机(主机数大于每个主机的Segment实例数)时,才允许使用散布镜像方式。
-v(详细模式)
将日志记录输出设置为详细。
--version(显示工具版本)
显示该工具的版本。
-? (help)
显示在线帮助。

示例

使用和主要数据相同的一组主机向现有的Greenplum数据库系统添加镜像。通过在当前主Segment端口号上加上 100来计算镜像数据库端口和复制端口:

$ gpaddmirrors -p 100

使用和主要数据不同的一组主机向现有的Greenplum数据库系统添加镜像:

$ gpaddmirrors -i mirror_config_file

其中mirror_config_file看起来像这样:

mirror0=0:sdw1-1:52001:/gpdata/mir1/gp0
                mirror1=1:sdw1-2:52002:/gpdata/mir2/gp1
                mirror2=2:sdw2-1:52001:/gpdata/mir1/gp2
                mirror3=3:sdw2-2:52002:/gpdata/mir2/gp3

使用gpaddmirrors -o输出一个要使用的镜像配置文件样例:

$ gpaddmirrors -o /home/gpadmin/sample_mirror_config