GaussDB-ALTER COORDINATOR
功能描述
修改协调节点CN的状态。可以在集群任意一个正常的CN上执行SQL,修改pgxc_node系统表中指定节点的nodeis_active字段值,并且还可以指定在哪些节点上修改系统表。
注意事项
- ALTER COORDINATOR是修改系统表的语句,限制只有管理员用户和内部维护模式(例如CM集群管理员)可以执行。这个语句是CN剔除特性专用,要配合其他操作,不要单独使用,不建议用户自己执行。
- 该语句执行完成后,需要调用SELECT reload_active_coordinator()语句,更新发生了变化的系统表所属的节点连接池的信息。
语法格式
| ``` ALTER COORDINATOR nodename SET status WITH (nodename1[, nodename2, nodename3 ...]);
| -------------------------------------------------------------------------------------------------- |
#### 参数说明
- **nodename**
CN节点名,对应在pgxc_node系统表的一行记录,指定后将修改记录中的nodeis_active字段值。
取值范围:字符串,只支持CN节点名,并且要保证该节点名在pgxc_node系统表中有对应的记录。
- **status**
CN的状态,pgxc_node系统表中nodeis_acitve字段的更新值。
取值范围:
- FALSE
- TRUE
- **nodename1[, nodename2, nodename3 ...]**
该SQL执行的节点范围,ALTER COORDINATOR执行时会自动下发到范围内的所有节点,需要包含当前执行节点。
取值范围:字符串,只支持CN节点名,要保证该节点名在pgxc_node系统表中有对应的记录,并且节点状态正常,否则SQL执行失败。
#### 示例
- 剔除发生故障的CN。
```
--集群有3个CN,cn_5001、cn_5002、cn_5003,均处于正常工作状态。cn_5001发生故障且满足剔除时间要求后,需要将cn_5001从集群中剔除。
gaussdb=# ALTER COORDINATOR cn_5001 SET False WITH (cn_5002,cn_5003);
--刷新pgxc_node系统表。在cn_5002和cn_5003节点上执行SQL刷新pgxc_node系统表中cn_5001对应记录的nodeis_active为false。
gaussdb=# SELECT reload_active_coordinator();
--查看CN的状态。nodeis_active字段的值已变成f(false)。
gaussdb=# SELECT nodeis_active,node_name FROM pgxc_node where node_name='cn_5001';
nodeis_active | node_name
---------------+-----------
f | cn_5001
(1 row)
```
- 恢复已解除故障的CN。
```
--cn_5001故障解除后,在集群中加回cn_5001。
gaussdb=# ALTER COORDINATOR cn_5001 SET True WITH (cn_5002,cn_5003);
--刷新pgxc_node系统表。在cn_5002和cn_5003节点上执行SQL刷新pgxc_node系统表中cn_5001对应记录的nodeis_active为ture。
gaussdb=# SELECT reload_active_coordinator();
--查看CN的状态。nodeis_active字段的值已变成t(ture)。
gaussdb=# SELECT nodeis_active,node_name FROM pgxc_node where node_name='cn_5001';
nodeis_active | node_name
---------------+-----------
t | cn_5001
(1 row)
```
更多详情请参考GaussDB 文档中心:<https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html>