数据节点无法连接到 MySQL 集群
Data nodes cannot connect to MySQL Cluster
我在 AWS EC2 实例(3 个数据节点和 1 个管理节点,在 t2.micro 运行 [=44= 上,我的 MySQL 集群 运行 有问题] 最新版本)。我遵循了本教程(使用 MySQL Cluster 7.5.5 的更新版本):https://stansantiago.wordpress.com/2012/01/04/installing-mysql-cluster-on-ec2/
在 my.cnf
文件中,我有以下代码:
[mysqld]
ndbcluster
datadir=/opt/mysqlcluster/deploy/mysqld_data
basedir=/opt/mysqlcluster/home/mysqlc
port=3306
在config.ini
文件中,我有这个代码:
[ndb_mgmd]
hostname=<private DNS of master>
datadir=/opt/mysqlcluster/deploy/ndb_data
nodeid=1
[ndbd default]
noofreplicas=3
datadir=/opt/mysqlcluster/deploy/ndb_data
[ndbd]
hostname=<private DNS of slave 1>
nodeid=3
[ndbd]
hostname=<private DNS of slave 2>
nodeid=4
[ndbd]
hostname=<private DNS of slave 3>
nodeid=5
[mysqld]
nodeid=50
然后我这样启动管理节点:
ndb_mgmd -f /opt/mysqlcluster/deploy/conf/config.ini --initial --configdir=/opt/mysqlcluster/deploy/conf
一切正常,没有错误显示。
但是,当我尝试使用以下命令将从属连接到集群时:
ndbd -c <private DNS of master>:1186
失败并显示此错误代码:
Unable to connect with connect string: nodeid=0,<private DNS of master>:1186
我尝试了命令 ndb_mgm -e show
以查看发生了什么:
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 3 node(s)
id=3 (not connected, accepting connect from <private DNS of slave 1>)
id=4 (not connected, accepting connect from <private DNS of slave 2>)
id=5 (not connected, accepting connect from <private DNS of slave 2>)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @<private IP address of master> (mysql-5.7.17 ndb-7.5.5)
[mysqld(API)] 1 node(s)
id=50 (not connected, accepting connect from any host)
管理节点似乎是在本地主机上启动的,这就是它失败的原因吗?
我不明白为什么我不能将数据节点连接到集群,因为配置文件看起来不错。
如果有人有任何建议,将不胜感激。谢谢!
让 MySQL 集群在 EC2 上运行的问题是确保
所有 VM 都可以通过适当的端口进行通信。
这是通过添加所有 VM 都属于的安全组来处理的。
我创建了一个名为 NDB Cluster 的安全组,它有以下规则
在以下端口上进行通信的入站和出站 TCP 流量:
1186(NDB 管理服务器端口)、3306(MySQL 服务器端口)、3316(额外的 MySQL 服务器端口)、8081(MySQL 集群自动安装程序端口)、11860(MySQL 集群数据节点端口), 33060 (MySQLX 端口).
我在 config.ini 中添加了一行到 NDBD DEFAULT 部分
服务器端口=11860
这意味着所有节点都使用此连接到数据节点
端口号。
对于所有使用此安全组的 VM,一切都很顺利,
当未设置为在所有节点之间进行通信时,一切都不起作用
显然非常好。
我在 AWS EC2 实例(3 个数据节点和 1 个管理节点,在 t2.micro 运行 [=44= 上,我的 MySQL 集群 运行 有问题] 最新版本)。我遵循了本教程(使用 MySQL Cluster 7.5.5 的更新版本):https://stansantiago.wordpress.com/2012/01/04/installing-mysql-cluster-on-ec2/
在 my.cnf
文件中,我有以下代码:
[mysqld]
ndbcluster
datadir=/opt/mysqlcluster/deploy/mysqld_data
basedir=/opt/mysqlcluster/home/mysqlc
port=3306
在config.ini
文件中,我有这个代码:
[ndb_mgmd]
hostname=<private DNS of master>
datadir=/opt/mysqlcluster/deploy/ndb_data
nodeid=1
[ndbd default]
noofreplicas=3
datadir=/opt/mysqlcluster/deploy/ndb_data
[ndbd]
hostname=<private DNS of slave 1>
nodeid=3
[ndbd]
hostname=<private DNS of slave 2>
nodeid=4
[ndbd]
hostname=<private DNS of slave 3>
nodeid=5
[mysqld]
nodeid=50
然后我这样启动管理节点:
ndb_mgmd -f /opt/mysqlcluster/deploy/conf/config.ini --initial --configdir=/opt/mysqlcluster/deploy/conf
一切正常,没有错误显示。
但是,当我尝试使用以下命令将从属连接到集群时:
ndbd -c <private DNS of master>:1186
失败并显示此错误代码:
Unable to connect with connect string: nodeid=0,<private DNS of master>:1186
我尝试了命令 ndb_mgm -e show
以查看发生了什么:
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 3 node(s)
id=3 (not connected, accepting connect from <private DNS of slave 1>)
id=4 (not connected, accepting connect from <private DNS of slave 2>)
id=5 (not connected, accepting connect from <private DNS of slave 2>)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @<private IP address of master> (mysql-5.7.17 ndb-7.5.5)
[mysqld(API)] 1 node(s)
id=50 (not connected, accepting connect from any host)
管理节点似乎是在本地主机上启动的,这就是它失败的原因吗? 我不明白为什么我不能将数据节点连接到集群,因为配置文件看起来不错。
如果有人有任何建议,将不胜感激。谢谢!
让 MySQL 集群在 EC2 上运行的问题是确保 所有 VM 都可以通过适当的端口进行通信。
这是通过添加所有 VM 都属于的安全组来处理的。 我创建了一个名为 NDB Cluster 的安全组,它有以下规则 在以下端口上进行通信的入站和出站 TCP 流量: 1186(NDB 管理服务器端口)、3306(MySQL 服务器端口)、3316(额外的 MySQL 服务器端口)、8081(MySQL 集群自动安装程序端口)、11860(MySQL 集群数据节点端口), 33060 (MySQLX 端口).
我在 config.ini 中添加了一行到 NDBD DEFAULT 部分 服务器端口=11860 这意味着所有节点都使用此连接到数据节点 端口号。
对于所有使用此安全组的 VM,一切都很顺利, 当未设置为在所有节点之间进行通信时,一切都不起作用 显然非常好。