未能在 <sql_node_ipaddr> 处为 API 分配 nodeid。返回错误:“未找到 mysqld(API) 的可用节点 ID。”

Posted

技术标签:

【中文标题】未能在 <sql_node_ipaddr> 处为 API 分配 nodeid。返回错误:“未找到 mysqld(API) 的可用节点 ID。”【英文标题】:Failed to allocate nodeid for API at <sql_node_ipaddr>. Returned error: 'No free node id found for mysqld(API).' 【发布时间】:2017-11-28 09:48:03 【问题描述】:

操作系统和mysql集群版本

操作系统: Linux centos7 mysql 集群: mysql-cluster-community-7.5.8-1.el7.x86_64

服务器列表

192.168.1.101 ndbd 节点1 192.168.1.102 ndbd 节点2 192.168.1.103 ndb_mgmd 192.168.1.104 mysql(api) 节点1 192.168.1.105 mysql(api) 节点2

两个数据节点(ndbd)正常,但sql节点(mysql)无法连接ndb_mgmd,网络正常。 SElinux 和防火墙被禁用。

我的配置

mgmd 配置(/var/lib/mysql-cluster/config.ini)

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
ServerPort=2202

[ndb_mgmd]
HostName=192.168.1.103
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=192.168.1.101
NodeId=2
DataDir=/opt/mysql/data

[ndbd]
HostName=192.168.1.102
NodeId=3
DataDir=/opt/mysql/data

[mysqld]
HostName=192.168.1.104

mysql 配置(/etc/config.ini)

[mysqld]
user=mysql
ndbcluster
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0
default-storage-engine=NDBCLUSTER
ndb-connectstring=192.168.1.103

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]
ndb-connectstring=192.168.1.103

错误日志

mgmd 日志

2017-11-27 20:28:35 [MgmtSrvr] WARNING  -- Failed to allocate nodeid for API at 192.168.1.104. Returned error: 'No free node id found for mysqld(API).'
2017-11-27 20:28:36 [MgmtSrvr] INFO     -- Alloc node id 4 failed, no new president yet

sql节点日志(mysqld)

2017-11-28T03:18:43.565265Z 4 [Warning] NDB: Failed to acquire global schema lock, error: (4009)Cluster Failure
2017-11-28T03:18:43.566664Z 4 [Warning] NDB: Failed to acquire global schema lock, error: (4009)Cluster Failure

【问题讨论】:

【参考方案1】:

1) 您从错误的节点启动了管理服务器,它已启动 来自 192.168.1.104,但在配置中说它应该在 192.168.1.103.

2) 您缺少第二个 MySQL 服务器的 mysqld 部分 192.168.1.105

一些建议: 1)为所有节点分配节点ID 2) 添加一个 API 节点,以便同时运行一些 NDB 工具

【讨论】:

以上是关于未能在 <sql_node_ipaddr> 处为 API 分配 nodeid。返回错误:“未找到 mysqld(API) 的可用节点 ID。”的主要内容,如果未能解决你的问题,请参考以下文章

程序集加载的问题?

未能在原生 Dart 扩展中链接 v8

Numpy 未能正确排列数组

未能执行URL

DBus,未能获得系统范围的名称

来自调试器的消息:未能发送第 k 个数据包