I'm running a pretty minimal MySQL cluster with configuration pretty much taken straight from the documentation. The data nodes are connecting fine, but the management server refuses to accept the API nodes. Here's what happens:
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
from ndb_mgm
outputs this:
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)
Here's my.cnf
--nothing particularly interesting:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
language=english
ndbcluster
[mysql_cluster]
ndb-connectstring=localhost
The only API-related configuration in config.ini
is this:
[mysqld]
[mysqld]
There's no [mysqld default]
section. I've tried setting hostnames.
I've tried both ndbd --reload
and ndbd --initial
, with appropriate restarts.
Update
It looks as though neither data node is listening on port 2202 based on the output of netstat -nl
. Since neither is listening, they can't connect to each other, and the cluster is never ready for API nodes to join. What could be preventing this?
Looks like the problem was that I was mixing localhost, LAN, and internet IP addresses. All of the servers need to be able to reach each other with the IP addresses that management server resolves. You can use
[tcp]
to override this, but it's far too messy.You have a typo in your file. Address 127.0.1.1 is wrong for the loopback address or localhost. It should be 127.0.0.1.