
# CREATE NODE
#### 功能描述
创建一个新的集群节点。
#### 注意事项
CREATE NODE是集群管理工具封装的接口，用来实现集群管理。该接口不建议用户直接使用，以免对集群状态造成影响。管理员用户才有权限使用该接口。
#### 语法格式
```
CREATE NODE nodename WITH
  (
    [ TYPE = nodetype,]
    [ HOST = hostname,]
    [ PORT = portnum,]
    [ HOST1 = 'hostname',]
    [ PORT1 = portnum,]
    [ HOSTPRIMARY [ = boolean ],]
    [ PRIMARY [ = boolean ],]
    [ PREFERRED [ = boolean ],]
    [ SCTP_PORT = portnum,]
    [ CONTROL_PORT = portnum,]
    [ SCTP_PORT1 = portnum,]
    [ CONTROL_PORT1 = portnum, ]
    [ NODEIS_CENTRAL [= boolean], ]
    [ NODEIS_ACTIVE [= boolean] ]
  );
```
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
PORT选项指定的端口号为节点间内部通信绑定的端口号，不同于外部客户端连接节点的端口号，可通过pgxc_node表查询。
#### 参数说明
- **nodename**
  节点名称。
  取值范围：字符串，要符合[标识符命名规范](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0322.html#ZH-CN_TOPIC_0000002559105775__zh-cn_topic_0000002558056023_section14873217506)。
  
- **TYPE = nodetype**
  指定节点的类型。
  取值范围：
  - 'coordinator'
  
  - 'datanode'
   
- **HOST = hostname**
  指定节点对应的主机名称或者IP地址。
  
- **PORT = portnum**
  指定节点绑定的主机端口号。
  
- **HOST1 = hostname**
  指定节点对应的备机名称或者IP地址。
  
- **PORT1 = portnum**
  指定节点绑定的备机端口号。
  
- **HOSTPRIMARY**
  声明主机名称或者IP地址是否为主。
  取值范围：
  - true
  
  - false（默认值）
   
- **PRIMARY = boolean**
  声明该节点是否为主节点。主节点允许做读写操作，否则只允许读操作。
  取值范围：
  - true
  
  - false（默认值）
   
- **PREFERRED = boolean**
  声明该节点是否为读操作的首选节点。
  取值范围：
  - true
  
  - false（默认值）
   
- **SCTP_PORT = portnum**
  主机TCP代理通信库使用的数据传输通道侦听端口，使用TCP协议侦听连接。
  
 
- **CONTROL_PORT = portnum**
  主机TCP代理通信库使用的控制传输通道侦听端口，使用TCP协议侦听连接。
  
- **SCTP_PORT1 = portnum**
  备机TCP代理通信库使用的数据传输通道侦听端口，使用TCP协议侦听连接。
  
- **CONTROL_PORT 1= portnum**
  备机TCP代理通信库使用的控制传输通道侦听端口，使用TCP协议侦听连接。
  
- **NODEIS_CENTRAL**
  表明当前节点是否为中心控制节点，只用于CN，对DN无效。
  - true
  
  - false（默认值）
   
- **NODEIS_ACTIVE**
  表明当前节点是否是正常状态，用于标记CN是否被剔除，对DN无效。
  - true
  
  - false（默认值）
   
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
多CN环境下，创建集群节点时只会在当前连接的CN下创建，不会同步至其他CN，需要在所有CN上执行，如果删除集群节点只需要连接一个CN即可。如果只在其中一个CN执行创建了集群节点，要删除需要定义当前cnnodename，并在当前CN下执行删除操作。请参见[DROP NODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0603.html#ZH-CN_TOPIC_0000002558946041)。
#### 示例
```
--创建集群节点，在所有CN上执行。
gaussdb=# CREATE NODE datanode1 WITH(
   TYPE = datanode,
   PREFERRED = false
);
gaussdb=# CREATE NODE datanode2 WITH(
   TYPE = datanode,
   PREFERRED = false
);
--查询集群DN初始状态。
gaussdb=# SELECT node_name, nodeis_preferred FROM pgxc_node WHERE node_type = 'D' ORDER BY 1;
 node_name | nodeis_preferred
-----------+------------------
 datanode1 | f
 datanode2 | f
(2 rows)
--将datanode1设为preferred DN。
gaussdb=# ALTER NODE datanode1 WITH(preferred = true);
--查询集群DN变更后状态。
gaussdb=# SELECT node_name, nodeis_preferred FROM pgxc_node WHERE node_type = 'D' ORDER BY 1;
 node_name | nodeis_preferred
-----------+------------------
 datanode1 | t
 datanode2 | f
(2 rows)
--删除集群节点，连接一个CN即可。
gaussdb=# DROP NODE datanode1;
gaussdb=# DROP NODE datanode2;
```
#### 相关链接
[ALTER NODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0496.html#ZH-CN_TOPIC_0000002559105877)，[DROP NODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0603.html#ZH-CN_TOPIC_0000002558946041)。
