gpconfig

1 描述

gpconfig 工具允许用户在 YMatrix 集群所有节点实例 (主节点(Master)、数据节点(Segment)和镜像节点(Mirror))的 postgresql.conf 文件中设置、复原或查看配置参数。设置参数时,如果需要,还可以为 Master 指定一个不同的值。例如,max_connections 参数要求 Master 的设置不同于 Segment 的设置。如果要设置或复原全局参数或仅可对 Master 设置的参数,请使用 --masteronly 选项。

不是所有参数都可以使用 gpconfig 来配置。例如,用户不能使用它来设置 port 参数,这个参数每个 Segment 实例都不同。-l 选项可以查看 gpconfig 支持的配置参数完整列表。

使用 gpconfig 设置配置参数后,参数值会出现在 postgresql.conf 文件的底部。使用 gpconfig 移除配置参数时,配置参数会在 postgresql.conf 文件中注释掉,从而恢复默认设置。如果使用 gpconfig 删除一个参数,并且稍后把它又添加回来(设置新值),则该参数会有两个实例,一个被注释掉,另一个被启用并添加到 postgresql.conf 文件的底部。

设置参数之后,用户可能需要重启集群,或者重新加载 postgresql.conf 文件以使更改生效。是否需要重新启动取决于被设置的参数。

要显示系统中当前参数的设置值,请使用 -s 选项。

如果你在使用 gpconfig 修改参数时收到以下报错:

GUC Validation Failed: mars3.degrade_min_run_size cannot be changed under normal conditions. Please refer to gpconfig documentation.

这意味着此参数被保护,需要添加 --skipvalidation 参数使修改生效,例如:

gpconfig -c optimizer_force_multistage_agg -v false --skipvalidation

gpconfig 使用以下环境变量连接到 YMatrix 集群的 Master 实例并获取系统配置信息:

  • PGHOST
  • PGPORT
  • PGUSER
  • PGPASSWORD
  • PGDATABASE

2. 参数选项

参数名 描述
-c param_name 或 --change param_name 通过在 postgresql.conf 文件的底部添加新的设置来改变配置参数的设置
-v value 或 --value value 用于由 -c 选项指定的配置参数的值。默认情况下,此值将应用于所有 Segment 及其 Mirror、Master 和 Standby。
非单个字符或数字的参数值必须用单引号包裹(')。例如,包括空格或特殊字符的字符串。如果要在字符串参数中嵌入单引号,需要用2个单引号或反斜杠进行转移('' 或 \')
-m master_value 或 --mastervalue master_value 用于在设置参数时,单独设置 Master 和 Standby 节点的配置,使其与 Segment 节点的配置不同
--masteronly 当被指定时,gpconfig 将仅编辑 Master 的 postgresql.conf 文件
-r param_name 或 --remove param_name 通过注释掉 postgresql.conf 文件中的配置项来删除配置参数
-l 或 --list 列出所有可用 gpconfig 工具修改的配置参数
-s param_name 或 --show param_name 显示 YMatrix 集群中所有实例(Master 和 Segment)上使用的配置参数值。 显示的值为集群当前生效的值,如果修改后还未重启,则看到的仍然是旧值
--file 显示 YMatrix 集群中所有实例(Master 和 Segment)的 postgresql.conf 配置文件中的值。配置文件中的值可能会因为集群未重启还未生效
不能与 --file-compare 选项一起使用
--file-compare 对于配置参数,将当前 YMatrix 集群(Master 和 Segment)中生效值与配置文件 postgresql.conf 中的值进行比较。
如果值不一样,显示来自所有主机的值;如果值一样,则显示摘要报告。
不能与 --file 选项一起使用
--skipvalidation 在设置参数时跳过有效性检查
使用此选项设置配置参数时要格外小心
--verbose 在命令执行期间显示额外的日志信息
--debug 设置日志输出级别为调试级别
? 或 -h 或 --help 显示帮助信息

3. 示例

查看 shared_buffers 配置信息:

gpconfig -s shared_buffers

设置 gp_resource_managerqueue

gpconfig -c gp_resource_manager -v queue

设置 Segment 节点 max_connections 值为 180,Master 节点值为 60

gpconfig -c max_connections -v 180 -m 60