You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法向CnosDB v2.4.0集群写入数据的问题求助

问题描述

部署了CnosDB v2.4.0(修订版48ea218)集群,配置如下:

  • 3台服务器,每台部署1个数据节点
  • 其中1台同时部署元节点(仅1个元节点,默认应为Leader)

执行写入请求:

curl -XPOST -u "root:" "http://127.0.0.1:8902/api/v1/write?db=public" -d "ma,ta=a fa=1i"

返回错误:

error: 050019, error_message: grpc client request error: The Operation can only Exec in Leader ReplicationSet {id: 38, leader_node_id 15, leader_vnode_id:39 vnodes: [VnodeInfo {id: 39, node_id:15, status: Running }]}

在部署元节点的服务器上执行写入仍报错,需解决该问题。

补充环境信息:

  • 操作系统:Red Hat Enterprise Linux Server release 7.9 Beta(Maipo)
  • 内核:3.10.0-1136.el7.x86_64
  • CPU:24核
  • 内存:64GB
  • 磁盘:HDD 500GB
解决方案

1. 核对节点ID与Leader归属

登录CnosDB CLI,执行命令查看集群状态:

SHOW REPLICATIONSETS;
SHOW VNODES;

重点匹配错误信息中的ReplicationSet ID(38)、Leader Node ID(15),确认当前执行写入的服务器对应的Node ID是否为15——如果不是,说明你连接的节点并非该ReplicationSet的Leader。

2. 检查当前节点的配置映射

查看CnosDB配置文件(通常为cnosdb.conf),核对node_id和http_listen_port参数:

  • 确认当前节点的node_id是否为15
  • 确认http_listen_port是否为8902,避免端口映射错误导致请求发送到非Leader节点

3. 直接指定Leader节点地址写入

如果已确认Leader节点的IP(例如192.168.1.10),修改写入请求的目标地址:

curl -XPOST -u "root:" "http://192.168.1.10:8902/api/v1/write?db=public" -d "ma,ta=a fa=1i"

4. 重启节点刷新状态

由于单元节点集群的元数据应直接生效,可尝试重启当前元节点及对应的数据节点,确保ReplicationSet状态加载正确:

systemctl stop cnosdb
systemctl start cnosdb

5. 校验数据节点的ReplicationSet配置

查看数据节点的配置文件,确认replication_set_id是否正确关联到ID为38的ReplicationSet,避免配置不匹配导致的Leader识别错误。

内容的提问来源于stack exchange,提问作者Munin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:05:01