gpaddmirrors
gpaddmirrors工具为初始仅配置了主Segment实例的现有Greenplum数据库系统配置镜像Segment实例。该工具创建镜像实例并开始主Segment实例和镜像Segment实例之间的在线复制进程。一旦所有的镜像与其主Segment同步好,用户的Greenplum数据库系统就建立了完全的数据冗余。
重要: 在在线复制进程中,Greenplum数据库应处于静止状态,负载和其他查询不应该运行。
默认情况下,该工具将提示用户输入将创建镜像Segment数据目录的文件系统位置。如果用户不想被提示,可以使用-m选项传递包含文件系统位置的文件。
镜像位置和端口必须与用户的主Segment数据位置和端口不同。如果用户创建了额外的文件空间,则还将提示用户为每个文件空间提供镜像位置。
该工具使用预定义的命名习惯在指定位置中为每个镜像Segment实例创建唯一的数据目录。必须为镜像Segment实例声明与主Segment实例相同数量的文件系统位置。如果用户希望在同一位置创建镜像数据目录,可以多次指定同样的目录名称,或者可以为每个镜像输入不同的数据位置。对于文件系统位置,请输入绝对路径。例如:
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[content]=content:address:port:mir_replication_port:pri_replication_
port:fselocation[:fselocation:...]
例如(如果用户除了默认的pg_system 文件空间之外没有配置额外的文件空间):
gp_segment_configuration、pg_filespace以及pg_filespace_entry 系统目录表可以帮助用户确定当前的主Segment配置,以便用户可以规划镜像Segment配置。例如,运行以下的查询:
=# SELECT dbid, content, address as host_address, port,
FROM gp_segment_configuration, pg_filespace_entry
WHERE dbid=fsedbid
ORDER BY dbid;
如果在后补的镜像主机上创建镜像,则新的镜像Segment主机必须预先安装Greenplum数据库软件,并且被配置为与现有的主Segment主机完全相同。
用户必须确保运行gpaddmirrors的用户(gpadmin用户)有权在指定的数据目录位置写入。用户可能想要在Segment主机上创建这些目录并且在运行gpaddmirrors之前将这些目录的拥有者改为(chown)适当的用户。
-a(不提示)
以静默模式运行 - 不提示输入信息。如果使用这一选项,必须使用-m或-i提供一个配置文件。
-B parallel_processes
-d master_data_directory
主数据目录。如果没有指定,将使用为$MASTER_DATA_DIRECTORY设置的值。
-i mirror_config_file
一个配置文件,每个要创建的镜像Segment对应一行。用户必须为系统中的每个主Segment都在该文件中列出一个镜像Segment。该文件格式如下(如gp_segment_configuration、pg_filespace以及pg_filespace_entry目录表中的每个属性):
filespaceOrder=[filespace1_fsname[:filespace2_fsname:...]
mirror[content]=content:address:port:mir_replication_port:pri_replication_
注意如果用户的系统配置了多个文件空间,用户只需要为filespaceOrder指定一个名称。如果用户的系统除了默认的pg_system文件空间之外没有配置额外的文件空间,该文件只有一个位置(对于默认数据目录文件空间,pg_system)。pg_system不需要在filespaceOrder行中被列出。它将总是在replication_port之后被列出的第一个fselocation。
-l logfile_directory
用来写日志的目录,默认为~/gpAdminLogs。
-m datadir_config_file
包含将创建镜像数据目录的文件系统位置列表的配置文件。如果未提供,该工具将提示用户输入位置。文件中的每一行都指定一个镜像数据目录位置。例如:
/gpdata/m1
/gpdata/m3
/gpdata/m4
如果用户的系统除了默认的pg_system 文件空间之外还配置了其他文件空间,则还必须列出每个文件空间的文件系统位置,如下所示:
-o output_sample_mirror_config
如果用户不确定如何布置-i 选项使用的镜像配置文件,用户使用这一选项运行gpaddmirrors来生成一个基于主Segment配置的镜像配置文件示例。该工具将提示用户输入用户的镜像Segment数据目录位置(除非用户使用-m在一个文件中提供了这些位置)。然后,用户可以编辑此文件根据需要将主机名更改为后补的镜像主机。
-p port_offset
可选。这个数字被用于计算用于镜像Segment的数据库端口和复制端口。默认偏移量为1000。镜像端口分配计算如下:
主端口 +(2 * 偏移量)= 镜像复制端口
主端口 +(3 * 偏移量) = 主机复制端口
例如,如果主Segment的端口为50001,则默认情况下,其镜像将使用数据库端口51001,镜像复制端口52001和主复制端口53001。
-s (散布镜像)
在可用主机上散布镜像Segment。默认情况下,将把一组镜像Segment集合在一起放在不同于其主Segment集合的后补主机上。镜像散布将把每个镜像放置在Greenplum数据库阵列中的不同主机上。只有在阵列中有足够数量的主机(主机数大于每个主机的Segment实例数)时,才允许使用散布镜像方式。
-v (详细模式)
将日志记录输出设置为详细。
--version (显示工具版本)
显示该工具的版本。
-? (help)
显示在线帮助。
使用和主要数据相同的一组主机向现有的Greenplum数据库系统添加镜像。通过在当前主Segment端口号上加上100来计算镜像数据库端口和复制端口:
$ gpaddmirrors -p 100
使用和主要数据不同的一组主机向现有的Greenplum数据库系统添加镜像:
$ gpaddmirrors -i mirror_config_file
其中mirror_config_file看起来像这样(如果除了默认的pg_system文件空间之外,没有配置额外的文件空间):
filespaceOrder=
mirror0=0:sdw1-1:52001:53001:54001:/gpdata/mir1/gp0
mirror1=1:sdw1-2:52002:53002:54002:/gpdata/mir2/gp1
mirror3=3:sdw2-2:52002:53002:54002:/gpdata/mir2/gp3