gpexpand
在阵列中的新主机之间扩展现有的Greenplum数据库。
概要
gpexpand [{ -f|--hosts-file} hosts_file]
| { -i|--input} input_file [-B batch_size] [-V|--novacuum]
| { { -d | --duration} hh:mm:ss | { -e|--end} 'YYYY-MM-DD hh:mm:ss'}
[-a|-analyze]
[-n parallel_processes]
| { -r|--rollback}
| { -c|--clean}
[-D database_name] [-v|--verbose] [-s|--silent]
[{ -t|--tardir} directory ]
[-S|--simple-progress ]
gpexpand -? | -h | --help
gpexpand --version
先决条件
- 用户作为Greenplum数据库超级用户(
gpadmin
)登录。 - 新的Segment主机已被根据现有的Segment主机安装和配置。这包括:
- 配置硬件和操作系统
- 安装Greenplum软件
- 创建
gpadmin
用户帐户 - 交换SSH密钥。
- 用户的Segment主机上有足够的磁盘空间来临时保存最大表的副本。
- 重新分布数据时,Greenplum数据库必须以生产模式运行。Greenplum数据库不能是受限模式或Master模式。不能指定
gpstart
的选项-R
或者-m
启动Greenplum数据库。
描述
gpexpand
工具分两个阶段执行系统扩展:Segment初始化和表重新分布。
在初始化阶段,gpexpand
用一个输入文件运行,该文件指定新Segment的数据目录、dbid值和其他特征。用户可以手动创建输入文件,也可以在交互式对话中按照提示进行操作。
如果用户选择使用交互式对话创建输入文件,则可以选择指定包含扩展主机列表的文件。在提示输入信息时,如果用户的平台或命令shell限制可键入的主机名列表的长度,则可能不得不用-f
指定主机。
除了初始化Segment,初始化阶段还执行这些操作:
- 创建扩展方案以存储扩展操作的状态,包括表的详细状态。
- 将所有表的分布策略改为
DISTRIBUTED RANDOMLY
。原始的分布策略将在重新分布阶段中恢复。
要开始重新分布阶段,必须使用-d
(持续时间)或-e
(结束时间)选项运行gpexpand
。在达到指定的结束时间或持续时间之前,该工具将在扩展方案中重新分布表。每个表都使用ALTER TABLE
命令重新组织,以便在新的Segment上重新平衡表, 并将表设置为其原始分布策略。如果gpexpand
在指定的持续时间之前完成所有表的重新组织,则会显示成功消息并结束。
注意: 数据重新分布应该在低峰(相对高峰期)时段进行。重新分布可以在很长时间内分批次进行。
选项
-a | --analyze
在扩展后运行ANALYZE
更新表的统计信息,默认是不运行ANALYZE
。
-B batch_size
在暂停一秒钟之前发送给给定主机的远程命令的批量大小。默认值是16
,有效值是1-128。
gpexpand
工具会发出许多设置命令,这些命令可能会超出主机的已验证连接的最大阈值(由SSH守护进程配置中的MaxStartups定义)。该一秒钟的暂停允许在gpexpand
发出更多命令之前完成认证。
默认值通常不需要改变。但是,如果gpexpand
由于连接错误(例如'ssh_exchange_identification: Connection closed by remote host.'
)而失败,则可能需要减少命令的最大数量。
-c | --clean 删除扩展方案。 -d | --duration hh:mm:ss
扩展会话的持续时间从头到尾。 -D database_name
指定要在其中创建扩展方案和表的数据库。如果没有给出这个选项,则使用环境变量PGDATABASE
的设置。数据库模板template1和template0不能使用。
-e | --end 'YYYY-MM-DD hh:mm:ss'
扩展会话的结束日期和时间。
-f | --hosts-file filename
指定包含用于系统扩展的新主机列表的文件的名称。文件的每一行都必须包含一个主机名。
该文件可以包含指定或不指定网络接口的主机名。gpexpand
工具处理这两种情况,如果原始节点配置了多个网络接口,则将接口号添加到主机名的末尾。
注意: Greenplum数据库Segment主机的命名习惯是sdwN
,其中sdw
是前缀并且N
是数字。例如,sdw1
、sdw2
等等。对于具有多个接口的主机,约定是在主机名后面添加破折号( -
)和数字。例如sdw1-1
和sdw1-2
是主机 sdw1
的两个接口名称。
-i | --input input_file
指定扩展配置文件的名称,其中为每个要添加的Segment包含一行,格式为:
hostname:address:port:fselocation:dbid:content:preferred_role:replication_port
如果用户的系统具有文件空间,gpexpand
会预期文件空间配置文件(input_file_name.fs
)与扩展配置文件位于同一目录中。文件空间配置文件格式为:
filespaceOrder=filespace1_name:filespace2_name: ...
dbid:/path/for/filespace1:/path/for/filespace2: ...
dbid:/path/for/filespace1:/path/for/filespace2: ...
...
-n parallel_processes
要同时重新分布的表的数量。有效值是1 - 96。
每个表重新分布过程都需要两个数据库连接:一个用于更改表,另一个用于在扩展方案中更新表的状态。在增加-n
之前,检查服务器配置参数max_connections
的当前值,并确保不超过最大连接限制。
-r | --rollback
回滚失败的扩展设置操作。如果回滚命令失败,请使用-D
选项指定包含要回滚的操作的扩展方案的数据库,并再次尝试。
-s | --silent
以静默模式运行。在警告时,不提示确认就可继续。
-S | --simple-progress
如果指定,gpexpand
工具仅在Greenplum数据库表gpexpand.expansion_progress中记录最少的进度信息。该工具不在表gpexpand.status_detail中记录关系大小信息和状态信息。
指定此选项可通过减少写入gpexpand
表的进度信息量来提高性能。
[-t | --tardir] directory
Segment主机上一个目录的完全限定路径,gpexpand
工具会在其中拷贝一个临时的tar文件。该文件包含用于创建Segment实例的Greenplum数据库文件。默认目录是用户主目录。
-v | --verbose
详细调试输出。使用此选项,该工具将输出用于扩展数据库的所有DDL和DML。
--version
显示工具的版本号并退出。
-V | --novacuum
在创建模式拷贝之前不清理目录表。
-? | -h | --help
显示在线帮助。
使用输入文件运行gpexpand
以初始化新Segment,并在默认数据库中创建扩展方案:
$ gpexpand -i input_file
运行gpexpand
最长持续60小时,以将表重新分布给新的Segment:
$ gpexpand -d 60:00:00
另见
[gpssh-exkeys](gpssh-exkeys.html#topic1)