
# ALTER NODE GROUP
#### 功能描述
修改一个node group的信息。
#### 注意事项
- 只有系统管理员或者被授予了node group的ALTER权限的用户可以修改node group信息。
- 修改node group操作都是系统内部操作，除了SET DEFAULT语法之外，其他操作都需要在维护模式下（调用set xc_maintenance_mode=on;）。
- ALTER NODE GROUP语法仅仅应该在数据库内部使用，使用者不应该手动调用这些SQL语句，否则会导致数据库系统数据不一致。
 
#### 语法格式
```
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
};
```
#### 参数说明
- **g** **roupname**
  需要修改的node group名称。
  取值范围：字符串，要符合[标识符命名规范](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0319.html#ZH-CN_TOPIC_0000002235270221__zh-cn_topic_0000002235098221_section14873217506)。
  
- **SET DEFAULT**
  将系统中除了groupname指定的node group之外的其他node group对象的in_redistribution字段设置为'y'。考虑到兼容以前版本，该语法仍然保留，且不需要设置维护模式。
  
- **RENAME TO new_group_name**
  将groupname指定的node group的名称修改为new_group_name。
  
- **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](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0888.html#ZH-CN_TOPIC_0000002235271005)系统表中存在。该语句仅仅修改系统表，不会进行实际的节点添加和数据重分布，用户不应该直接调用该SQL语句。可以在[PGXC_GROUP](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0887.html#ZH-CN_TOPIC_0000002235390825)系统表中观察该语句的影响。
  
- **DELETE NODE ( nodename \[, ... \] )**
  从groupname指定的NodeGroup中，将指定的节点移除，这些被移除的节点仍然存在于[PGXC_NODE](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0888.html#ZH-CN_TOPIC_0000002235271005)系统表中。该语句仅仅修改系统表，不会进行实际的节点移除和数据重分布，用户不应该直接调用该SQL语句。可以在[PGXC_GROUP](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0887.html#ZH-CN_TOPIC_0000002235390825)系统表中观察该语句的影响。
  
- **RESIZE TO dest_group_name**
  设置集群resize操作标志，将groupname所表示的NodeGroup设置为重分布的源NodeGroup，并取消is_installation标志；同时将desst_group_name设置为重分布的目的NodeGroup，并设置is_installation标志。
  
 
#### 示例
```
--查询集群DN初始状态。
gaussdb=# SELECT node_name, nodeis_preferred FROM pgxc_node WHERE node_type = 'D' ORDER BY 1;
 node_name | nodeis_preferred
-----------+------------------
 dn_6001_6002_6003 | f
 dn_6004_6005_6006 | f
 dn_6007_6008_6009 | f
(3 rows)
--创建NODE GROUP，用上一步中查询到的真实节点名称替换dn_6001_6002_6003。
gaussdb=# CREATE NODE GROUP test_group WITH ( dn_6001_6002_6003 );
--修改创建出的NODE GROUP名称为test_group_new。需要在维护模式下（调用SET xc_maintenance_mode=on;）。
gaussdb=# SET xc_maintenance_mode=on;
gaussdb=# ALTER NODE GROUP test_group RENAME TO test_group_new;
--查询NODE GROUP。
gaussdb=# SELECT group_name, group_members FROM pgxc_group;
   group_name   |   group_members   
----------------+-------------------
 group_version1 | 16384 16388 16394
 test_group_new | 16384
(2 rows)
--删除NODE GROUP，且关闭维护模式。
gaussdb=# DROP NODE GROUP test_group_new;
gaussdb=# SET xc_maintenance_mode=off;
```
#### 相关链接
[CREATE NODE GROUP](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0529.html#ZH-CN_TOPIC_0000002200350070)，[DROP NODE GROUP](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0575.html#ZH-CN_TOPIC_0000002235390433)
