我正在运行一个非常小的 MySQL 集群,其配置几乎直接取自文档。数据节点连接正常,但管理服务器拒绝接受 API 节点。以下是发生的情况:
INFO -- Node 2: Initial start, waiting for 3 to connect, nodes [ all: 2 and 3 connected: 2 no-wait: ]
INFO -- Node 3: Initial start, waiting for 2 to connect, nodes [ all: 2 and 3 connected: 3 no-wait: ]
WARNING -- Failed to allocate nodeid for API at 10.0.42.2. Returned error: 'No free node id found for mysqld(API).'
WARNING -- Failed to allocate nodeid for API at 127.0.0.1. Returned error: 'No free node id found for mysqld(API).'
show
从ndb_mgm
输出来看:
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @127.0.0.1 (mysql-5.6.14 ndb-7.3.3, starting, Nodegroup: 0)
id=3 @10.0.42.2 (mysql-5.6.14 ndb-7.3.3, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.1.1 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
以下my.cnf
——没有什么特别有趣的:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
language=english
ndbcluster
[mysql_cluster]
ndb-connectstring=localhost
唯一与 API 相关的配置config.ini
是这样的:
[mysqld]
[mysqld]
没有这个[mysqld default]
部分。我尝试过设置主机名。
我已尝试ndbd --reload
和ndbd --initial
,并进行适当的重启。
更新
根据 的输出,似乎两个数据节点都没有监听端口 2202。netstat -nl
由于没有监听,它们无法相互连接,并且集群永远无法让 API 节点加入。什么可能阻止这种情况?
答案1
问题似乎是我混合使用了 localhost、LAN 和 Internet IP 地址。所有服务器都需要能够使用管理服务器解析的 IP 地址相互访问。您可以使用[tcp]
它来覆盖此设置,但这太混乱了。
答案2
您的文件中有拼写错误。地址 127.0.1.1 不是环回地址或本地主机地址。它应该是 127.0.0.1。