初始化新Segment
当用户第一次用一个合法的输入文件运行gpexpand时,它会创建扩展方案并且把所有的表的分布策略设置为DISTRIBUTED RANDOMLY。在这些步骤完成后,运行gpexpand可检测扩展模式是否已经被创建,如果已经创建则还会执行表的重新分布。
上级主题:
要开始扩展,gpexpand要求一个包含有关新Segment和主机信息的输入文件。如果用户运行gpexpand但不指定输入文件,该工具会显示一个交互式的问讯来收集所需的信息并且自动创建一个输入文件。
如果用户使用交互式问讯创建输入文件,用户可以在问讯提示符中指定一个含有扩展主机列表的文件。如果用户的平台或者命令shell限制主机列表的长度,使用-f指定主机就是唯一的办法。
在用户运行gpexpand在交互模式中创建一个输入文件之前,确保用户了解:
- 新主机的数量(或者一个主机文件)
- 现有主机中使用的镜像策略(如果有)
- 每个主机要增加的Segment数量(如果有)
该工具会基于这些信息、dbid、content ID以及gp_segment_configuration中存储的数据目录值自动生成一个输入文件,并将该文件保存在当前目录中。
要在交互模式中创建一个输入文件
- 以将要运行用户的Greenplum数据库系统的用户(例如gpadmin)登入Master主机。
运行gpexpand。该工具显示关于如何准备一次扩展操作的消息,并且它会提示用户退出或者继续。
可以选择用-f指定一个主机文件。例如:
在该提示符中,选择Y以继续。
除非用户用-f指定了一个主机文件,用户会被提示输入主机名。可以输入新扩展主机的主机名组成的由逗号分隔的列表。不要包括接口主机名。例如:
如果只对现有主机增加Segment,在这个提示符处留一个空行。不要指定 localhost或者任何现有的主机名。
-
确保用户有足够的主机用于选中的组策略。更多有关镜像的信息请见。
输入要增加的主要Segment的数量(如果有)。默认情况下,新主机会被用与现有主机相同数量的主要Segment初始化。输入一个大于零的数字可以为每个主机增加Segment数量。用户输入的数字将是在所有主机上初始化的额外Segment的数量。例如,如果现有主机当前每个有两个Segment,输入一个值 2会在现有主机上多初始化两个Segment,而在新主机上会初始化四个Segment。
如果用户在增加新的主要Segment,为这些新的Segment输入新的主要数据目录的根目录。不要指定真实的数据目录名称,目录会由gpexpand 基于现有数据目录名称自动创建。
例如,如果用户的现有数据目录像下面这样:
/gpdata/primary/gp0
那么输入下面的内容(每一个提示输入一个)来指定两个新的主要Segment的数据目录:
当初始化运行时,该工具会在/gpdata/primary下面创建新目录 gp2以及gp3。
如果用户在增加新的镜像Segment,为这些新的Segment输入新的镜像数据目录的根目录。不要指定数据目录名称,目录会由gpexpand 基于现有数据目录名称自动创建。
例如,如果用户的现有数据目录像下面这样:
/gpdata/mirror/gp0
输入下面的内容(每一个提示输入一个)来指定两个新的镜像Segment的数据目录:
/gpdata/mirror
/gpdata/mirror
当初始化运行时,该工具会在/gpdata/mirror下面创建新目录gp2以及gp3。
这些新Segment的主要和镜像根目录必须在主机上存在,并且运行gpexpand的用户必须具有在其中创建目录的权限。
除非用户的扩展场景有非典型的需求,请使用交互式问讯过程来创建用户自己的输入文件。
扩展输入文件的格式是:
hostname:address:port:fselocation:dbid:content:preferred_role:replication_port
例如:
sdw5:sdw5-2:50012:/gpdata/primary/gp10:12:10:p:53011
sdw5:sdw5-2:60011:/gpdata/mirror/gp9:13:9:m:63011
sdw5:sdw5-1:60012:/gpdata/mirror/gp10:14:10:m:63011
对于每一个新的Segment,这种格式的扩展输入文件要求下列内容:
在用户创建了一个输入文件之后,运行gpexpand以初始化新的Segment。当处理结束时,该工具自动停止Greenplum数据库Segment初始化并且重启系统。
- 以将要运行用户的Greenplum数据库系统的用户(例如gpadmin)登入Master主机。
当初始化处理完成时,用户可以连接到Greenplum数据库并且查看扩展方案。该方案位于用户用 -D或者用PGDATABASE环境变量指定的数据库中。更多信息请见关于扩展方案。
只有当一次扩展操作失败时,用户才能回滚它。
如果扩展在初始化步骤失败,而数据库没有启动,用户必须首先通过运行gpstart -m命令以master-only模式重启数据库。