Я использую довольно минимальный кластер 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. Что могло этому помешать?
Похоже, проблема заключалась в том, что я смешивал IP-адреса localhost, LAN и Internet. Все серверы должны иметь возможность связываться друг с другом с помощью IP-адресов, разрешаемых сервером управления. Ты можешь использовать [tcp]
чтобы отменить это, но это слишком беспорядочно.
В вашем файле есть опечатка. Адрес 127.0.1.1 неверен для адреса обратной связи или локального хоста. Это должно быть 127.0.0.1.