更新时间:2025-07-10 GMT+08:00

ALTER NODE GROUP

功能描述

修改node group的信息。

注意事项

  • 只有系统管理员可以修改node group信息。
  • 修改node group操作都是系统内部操作,除了SET DEFAULT语法之外,其他操作都需要在维护模式下(调用set xc_maintenance_mode=on;)。
  • ALTER NODE GROUP语法仅在数据库内部使用,使用者不应该手动调用这些SQL语句,否则会导致数据库系统数据不一致。

语法格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
ALTER NODE GROUP groupname
    | SET DEFAULT
    | RENAME TO new_group_name
    | SET VCGROUP RENAME TO new_group_name
    | SET NOT VCGROUP
    | SET TABLE GROUP new_group_name
    | COPY BUCKETS FROM src_group_name
    | ADD NODE ( nodename [, ... ] )
    | DELETE NODE ( nodename [, ... ] )
    | RESIZE TO dest_group_name
    | SET VCGROUP WITH GROUP new_group_name
    | SET STATUS TO value
    | SET PARENT_NAME TO parent_group_name
    | SET [NOT] AUTOSCALE
    | SET [NOT] ELASTIC
    | SET OFFLOADING_STRATEGY TO new_offloading_strategy
    | SET OFFLOADING_RATE TO value

参数说明

表1 ALTER NODE GROUP参数说明

参数

描述

取值范围

groupname

需要修改的node group名称。

有效的node group名称。

SET DEFAULT

将系统中除了groupname指定的node group之外的其他node group对象的in_redistribution字段设置为'y'。考虑到兼容以前版本,该语法仍然保留,且不需要设置维护模式。

-

RENAME TO new_group_name

将groupname指定的node group的名称修改为new_group_name。

-

SET VCGROUP RENAME TO new_group_name

将整个物理集群转换为一个逻辑集群,转换后groupname是逻辑集群名称,原物理集群名称修改为new_group_name。

-

SET NOT VCGROUP

将所有逻辑集群转换为普通的node group,所有逻辑集群的group_kind从'v' 变成 'n'。

-

SET TABLE GROUP new_group_name

将所有CN节点的pgxc_class表中pgroup字段是group_name的记录修改为new_group_name。

-

COPY BUCKETS FROM src_group_name

从src_group_name表示的NodeGroup中,将group_members字段和group_buckets字段的内容拷贝到groupname所表示的NodeGroup中。

-

ADD NODE ( nodename [, ... ] )

从groupname指定的NodeGroup中增加指定的节点,这些新增节点在pgxc_node系统表中存在。该语句仅修改系统表,不会进行实际的节点添加和数据重分布,用户不应该直接调用该SQL语句。

-

DELETE NODE ( nodename [, ... ] )

从groupname指定的NodeGroup中,将指定的节点移除,这些被移除的节点仍然存在于pgxc_node系统表中。该语句仅修改系统表,不会进行实际的节点移除和数据重分布,用户不应该直接调用该SQL语句。

-

RESIZE TO dest_group_name

设置集群resize操作标志,将groupname所表示的NodeGroup设置为重分布的源NodeGroup,并取消is_installation标志;同时将desst_group_name设置为重分布的目的NodeGroup,并设置is_installation标志。

-

SET VCGROUP WITH GROUP new_group_name

将整个物理集群转换为一个逻辑集群,转换后groupname仍是物理集群,new_group_name为转换后的逻辑集群名称。

-

SET STATUS TO value

设置逻辑集群的状态。仅用于弹性并发扩展特性,该参数仅9.1.0.100及以上集群版本支持。

0~4。

  • 0表示正常运行状态。
  • 1表示申请创建弹性逻辑集群。
  • 2表示弹性逻辑集群创建中。
  • 3表示弹性逻辑集群超时待删除。
  • 4表示超过用户设定的删除时间,弹性逻辑集群不再接收新查询,正在运行的查询全部执行结束后会自动转换为3。
    说明:

    其中状态0为所有逻辑集群的初始状态。状态1和2只能被经典逻辑集群设置,3和4只能被弹性逻辑集群设置。

SET PARENT_NAME TO parent_group_name

设置弹性逻辑集群所对应的经典逻辑集群的名称。仅用于弹性并发扩展特性。

逻辑集群的名称需用引号包围,其中双引号标识区分集群名称大小写。

SET [NOT] AUTOSCALE

仅用于弹性并发扩展特性。

  • NOT AUTOSCALE用于标识该弹性逻辑集群为用户手动创建的。
  • AUTOSCALE用于标识该弹性逻辑集群为系统自动创建的。

-

SET [NOT] ELASTIC

仅用于手动弹性的自动分流特性。
  • NOT ELASTIC用于标识该弹性逻辑集群不属于弹性资源池。
  • ELASTIC用于标识该弹性逻辑集群属于弹性资源池。

-

SET OFFLOADING_STRATEGY TO new_offloading_strategy

仅用于手动弹性的自动分流特性,需要与SET OFFLOADING_RATE搭配使用。设置主逻辑集群的负载卸载策略。该参数仅9.1.1.100及以上集群版本支持。

专用弹性逻辑集群是设置PARENT_NAME和ELASTIC的弹性逻辑集群。例如,集群存在主逻辑集群v3_logical和弹性逻辑集群computing_group1,通过执行ALTER NODE GROUP computing_group1 SET ELASTIC 和 ALTER NODE GROUP computing_group1 SET PARENT_NAME TO "v3_logical" 将computing_group1设置为v3_logical的专用弹性逻辑集群。通过这种设置,专用弹性逻辑集群computing_group1只会执行来自主逻辑集群v3_logical的作业负载。

公用弹性逻辑集群是设置ELASTIC,但没有设置PARENT_NAME的弹性逻辑集群。公用弹性逻辑集群执行的作业负载可以来自集群任何的主逻辑集群。

取值为None、Dedicated、Elastic。

  • none:该主逻辑集群的负载均在本逻辑集群执行,不会执行作业负载卸载。
  • dedicated:该主逻辑集群将会卸载部分负载到专用弹性逻辑集群执行,其中负载卸载比例受到offloading_rate参数控制。
  • elastic:该主逻辑集群将会卸载部分负载到专用和公用弹性逻辑集群执行,其中负载卸载比例受到offloading_rate参数控制。

SET OFFLOADING_RATE TO value

仅用于手动弹性的自动分流特性,需要与SET OFFLOADING_STRATEGY搭配使用。设置主逻辑集群负载卸载比例。该参数仅9.1.1.100及以上集群版本支持。

SET OFFLOADING_STRATEGY和SET OFFLOADING_RATE搭配一起实现手动弹性的自动分流特性。例如,集群存在主逻辑集群v3_logical和专用弹性逻辑集群computing_group1和公用弹性逻辑集群computing_group2。

  • 通过设置v3_logical的OFFLOADING_STRATEGY为dedicated,OFFLOADING_RATE为40,可以将v3_logical的40%作业负载路由到专用弹性逻辑集群computing_group1执行。
  • 通过设置v3_logical的OFFLOADING_STRATEGY为elastic,OFFLOADING_RATE为40,可以将v3_logical的40%作业负载路由到专用弹性逻辑集群computing_group1和公用弹性逻辑集群computing_group2执行,其中内核将会以roundrobin策略将负载均分到computing_group1和computing_group2上。

0~100。

自动分流特性最终的卸载到弹性逻辑集群的比例可能达不到OFFLOADING_RATE设置的比例,原因如下:

  • 自动分流特性仅针对全V3表的DML作业负载,其他作业负载不参与自动分流;
  • 为了保证简单作业(作业的计划代价小于vw_offloading_min_cost)的执行性能,尽管自动分流特性将简单作业决策到弹性逻辑集群执行,但是简单作业最终的执行位置也是主逻辑集群。