2

我正在尝试在 CentOS 中配置一个 mysql 集群,但我遇到了一些我不知道如何解决的问题,我非常感谢一些帮助。

mysql集群环境:

DB1 - 192.168.50.101 - Management Server (MGM) node.
DB2 - 192.168.50.102 - Storage Server (NDBD) node 1.
DB3 - 192.168.50.103 - Storage Server (NDBD) node 2.

我配置整个集群的步骤:

  1. 配置管理服务器节点 (192.168.50.101)

1.1 安装mysql服务器并启动它:

# yum install mysql mysql-server
# chkconfig --levels 235 mysqld on
# /etc/init.d/mysqld start

1.2 安装集群包:

# rpm -ivh MySQL-ndb-management-5.0.90-1.glibc23.i386.rpm
# rpm -ivh MySQL-ndb-tools-5.0.90-1.glibc23.i386.rpm

1.3 创建集群目录和config.ini文件

# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini

1.4 在config.ini中写入集群配置内容

[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the .world. database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

# Management Section (MGM)
[NDB_MGMD]
#NodeId = 1
# IP address of the management node
HostName=192.168.50.101

# Storage Server Section (NDBD)
[NDBD]
#NodeId = 2
# IP address of the Storage Server (NDBD) node 1
HostName=192.168.50.102
DataDir=/var/lib/mysql
BackupDataDir=/var/lib/backup
DataMemory=100M

[NDBD]
#NodeId = 3
# IP address of the Storage Server (NDBD) node 2
HostName=192.168.50.103
DataDir=/var/lib/mysql
BackupDataDir=/var/lib/backup
DataMemory=100M

# one [MYSQLD] per storage node
# 2 Clients MySQL
[MYSQLD]
#NodeId = 5
[MYSQLD]
#NodeId = 6

1.5 启动管理服务

# ndb_mgmd

1.6 进入管理控制台

# ndb_mgm

1.7 使用命令 SHOW 查看节点状态

ndb_mgm> show

Connected to Managemente Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 nodes
id=2 (not connected, accepting connect from 192.168.50.102)
id=3 (not connected, accepting connect from 192.168.50.103)

[ndb_mgmd(MGM)] 1 node
id=1 @192.168.50.101 (Version: 5.0.95)

[mysqld(API)] 2 nodes
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
  1. 管理节点配置OK,我们配置一个Storage Server节点(192.168.50.102)。

2.1 安装 mysql 服务器,如步骤 1.1 。

2.2 从“ http://dev.mysql.com/downloads/cluster/ ”下载MYSQL集群

2.3 提取内容并将文件ndb复制到/usr/bin/。

2.4 将存储服务器节点连接到管理服务器。

ndbd --connect-string=192.168.50.101 --initial -n

这就是问题所在。在 Management Server 中,将显示下一个错误:

ndb_mgm > Node 2: Forced node shutdown completed. Ocurred during startphase 0. 
Caused by error 2350: 'Invalid configuration received from Management 
Server(Configuration error). Permanent error, external action needed'.

在 Storage Server 节点中,显示的警告是:

[ndbd] INFO    -- Angel connected to '102.168.50.101:1186'
[ndbd] INFO    -- Angel allocated nodeid: 2
[ndbd] WARNING -- Configuration didn't contain generation (likely old ndb_mgmd

有人知道我应该怎么做才能解决这个问题吗?

谢谢!

4

1 回答 1

2

如果它对其他人有帮助,我将在此处粘贴 MySQL 论坛上给出的回复...


看起来您正在尝试将存储库中的管理节点二进制文件(非常旧的版本)与非集群 MySQL 服务器(不允许)与来自 mysql.com 的数据节点(非常新)混合。

第一步应该是使用来自 mysql.com 的所有节点的二进制文件。

如果您想尝试浏览器驱动的自动安装程序以使您的生活更简单,请查看http://www.clusterdb.com/mysql-cluster/auto-installer-labs-release/或者如果您'想手动设置然后看看http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts/


你好安德鲁,

非常感谢您的回复。事实上,我在 mgm 节点中使用的是旧的 mysql 版本。

我从http://www.mysql.com/downloads/cluster/下载了所有内容,像我之前所说的那样设置每个节点,并使用以下方法将数据节点连接到管理节点:

shell> /usr/local/mysql/bin/ndbd --connect-string=192.168.56.101 -- Angel 连接到 192.168.56.101:1186 -- Angel 分配的 nodeid: 2

另外,我使用命令 show 检查了管理节点:

ndb_mbm> 显示

集群配置

[ndbd(NDB)] 2 个节点 id=2 @192.168.50.102(mysql-5-5.29 ndb-7.2.10, starting, Nodegroup:0) id=3 (未连接,接受来自 192.168.50.103 的连接)

[ndb_mgmd(MGM)] 1 个节点 id=1 @192.168.50.101(版本:5.0.95)

[mysqld(API)] 2 个节点 id=5(未连接,接受来自任何主机的连接) id=6(未连接,接受来自任何主机的连接)

如您所见,数据节点(id 2)正在连接到 mgm 节点,但是当我尝试启动数据节点(id 2)mysql时,它不会启动...

shell> /etc/init.d/mysql start 启动 MySQL.................................服务器退出更新 PID 文件 (/usr/loca/mysql/data/localhost.node2-1. {FAILED])

查了一下问题,好像mysql不喜欢我在/etc/my.cnf里写的config。

一开始我有:

-- 我的.cnf --

[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0

[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

在我添加了 ndbcluster 配置之后:

-- 我的.cnf --

[客户端] 端口 = 3306 套接字 = /tmp/mysql.sock

[mysqld] 端口 = 3306 ndbcluster ndb-connectstring=192.168.56.107 [mysqld_cluster] ndb-connectstring=192.168.56.107

datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock

[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

问题是如果我注释掉 ndbluster 部分,mysql 会正确启动,但如果 ndbcluster 行或 ndb-connectstring 行没有被注释,mysql 会启动。我应该怎么办?我不明白为什么mysql在具有ndbcluster配置时无法启动。有什么不对?


我注意到您只有两个 ndbd 进程之一在运行(并且它仍处于启动状态)。这将阻止 mysqld 连接到集群,因此您需要先启动第二个 ndbd 并等到 ndb_mgm 报告它们都处于运行状态。


我也尝试先连接两个 nbdb,但它们卡在了起始阶段:

ndb_mgm> 显示

集群配置

[ndbd(NDB)] 2 个节点 id=2 @192.168.50.102(mysql-5-5.29 ndb-7.2.10,开始,节点组:0) id=3 @192.168.50.103(mysql-5-5.29 ndb-7.2。 10,开始,节点组:0)

[ndb_mgmd(MGM)] 1 个节点 id=1 @192.168.50.101 (mysql-5-5.29 ndb-7.2.10)

[mysqld(API)] 2 个节点 id=5(未连接,接受来自任何主机的连接) id=6(未连接,接受来自任何主机的连接)

我检查了 mgm 日志(ndb_l_cluster.log):

[MgmtSrvr] INFO -- 节点 3:初始启动,等待 2 连接,节点 [所有:2 和 3 已连接:3 无等待:] [MgmtSrvr] INFO -- 节点 2:初始启动,等待 3 连接, 节点 [所有:2 和 3 已连接:3 无等待:]

即使我尝试从 mgm 开始它们:

ndb_mgm> 2 start 正在启动数据库节点 2。

ndb_mgm> 3 start 正在启动数据库节点 3。

但是没有“节点 2:启动启动”消息...

我正在使用 CentOS 6.3 的三个虚拟机中运行集群。是问题吗?也许是配置文件?


通常这种类型的启动问题是由防火墙规则阻止访问集群中另一个节点上的随机高端口造成的。Ndbd 节点使用这些来相互通信。

解决方案是要么允许这些主机之间的所有连接,要么允许连接到由 ServerPort 定义的特定端口。

请参阅:http ://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-serverport 和 http://johanandersson.blogspot.com/2009/05/ cluster-fails-to-start-self-diagnosis.html


马修,你是对的!我允许所有节点之间的端口,一切正常!

非常感谢马修和安德鲁!

于 2013-03-01T16:11:35.597 回答