数据节点无法连接 MySQL Cluster

Posted

技术标签:

【中文标题】数据节点无法连接 MySQL Cluster【英文标题】:Data nodes cannot connect to MySQL Cluster 【发布时间】:2017-04-10 00:53:25 【问题描述】:

我的 mysql 集群在 AWS EC2 实例(3 个数据节点和 1 个管理节点,在运行 Ubuntu 最新版本的 t2.micro)上运行时遇到问题。我遵循了本教程(使用 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)

似乎管理节点在localhost上启动,这就是它失败的原因吗? 我不明白为什么我无法将数据节点连接到集群,因为配置文件看起来不错。

如果有人有任何建议,将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

让 MySQL 集群在 EC2 上工作的问题是确保 所有虚拟机都可以通过适当的端口进行通信。

这是通过添加一个所有虚拟机都属于的安全组来处理的。 我创建了一个名为 NDB Cluster 的安全组,它有以下规则 在以下端口上进行通信的入站和出站 TCP 流量: 1186(NDB 管理服务器端口)、3306(MySQL 服务器端口)、3316(额外 MySQL 服务器端口)、8081(MySQL 集群自动安装程序端口)、11860(MySQL 集群数据节点端口)、33060(MySQLX 端口)。

我在 config.ini 中添加了一行到 NDBD DEFAULT 部分 服务器端口=11860 这意味着所有节点都使用这个连接到数据节点 端口号。

所有虚拟机都使用这个安全组,一切都很顺利, 当未设置为在所有节点之间进行通信时,一切都不起作用 显然很好。

【讨论】:

是的,当然!错误消息让我很困惑,但这很明显......谢谢。

以上是关于数据节点无法连接 MySQL Cluster的主要内容,如果未能解决你的问题,请参考以下文章

无法从 MySQL Workbench 连接到 RDS MySQL 数据库

MySql Cluster - 管理节点不会启动

Mysql - 无法连接未知数据库'databasename'错误

Mysql - 无法连接未知数据库'databasename'错误

Visual Studio 2010无法连接到MySql服务器

Docker的mysql集群节点可以正常创建,但无法正常连接到宿主机的mysql应该如何解决?