我希望有人可以向我指出使用3个带有多个管理节点的MySQL Cluster 7.1集群服务器的问题。
当前,该群集可以与一个管理节点完美地协同工作。这是设置:
第一台服务器仅运行ndb_mgmd(192.168.66.114)的实例
第二台服务器运行ndbd和mysqld(192.168.66.2)的实例
第三台服务器运行ndbd和mysqld的实例(192.168.66.113)
我想在集群中引入第二个管理节点。对于两个管理服务器,我都有完全相同的config.ini。这里是:
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
PortNumber=1186
datadir=c:/Progra~1/mysql-cluster-gpl-7.1.3-win32
LogDestination=FILE:filename=c:/Progra~1/mysql-cluster-gpl-7.1.3-win32/clusterlog.log
[TCP DEFAULT]
# Management Server
[NDB_MGMD]
Id=1
HostName=192.168.66.114
ArbitrationRank=1
[NDB_MGMD]
Id=6
HostName=192.168.66.2
ArbitrationRank=2
# Storage Engines
[NDBD]
Id=2
HostName=192.168.66.2
DataDir= D:/AppData/ndb-7.1.3
[NDBD]
Id=3
HostName=192.168.66.113
DataDir= D:/AppData/ndb-7.1.3
[MYSQLD]
Id=4
HostName=192.168.66.2
[MYSQLD]
Id=5
HostName=192.168.66.113
当我在两台服务器上启动ndb_mgmd实例并在
show
中发出ndb_mgm
命令时,在第一台管理服务器上,我看到它已经启动:ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.66.2 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @192.168.66.113 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.66.114 (mysql-5.1.44 ndb-7.1.3)
id=6 (not connected, accepting connect from 192.168.66.2)
[mysqld(API)] 2 node(s)
id=4 @192.168.66.2 (mysql-5.1.44 ndb-7.1.3)
id=5 @192.168.66.113 (mysql-5.1.44 ndb-7.1.3)
ndb_mgm>
我尚未在第二个管理服务器上启动第二个管理实例,因此以下几行完全可以(从ndb_mgm输出上方):
id=6 (not connected, accepting connect from 192.168.66.2)
然后,我转到第二个管理服务器(192.168.66.2),并启动ndb_mgmd。启动它之后,我对它发出
show
命令:ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.66.2)
id=3 (not connected, accepting connect from 192.168.66.113)
[ndb_mgmd(MGM)] 2 node(s)
id=1 (not connected, accepting connect from 192.168.66.114)
id=6 @192.168.66.2 (mysql-5.1.44 ndb-7.1.3)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.66.2)
id=5 (not connected, accepting connect from 192.168.66.113)
ndb_mgm>
第二个管理节点仅报告其本身已连接,而不是将两个管理节点都列为已连接。返回到第一个192.168.66.114上的管理服务器仍会提供与启动第二个ndb_mgmd之前相同的输出,即仅连接了192.168.66.114上的管理节点:
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.66.2 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @192.168.66.113 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.66.114 (mysql-5.1.44 ndb-7.1.3)
id=6 (not connected, accepting connect from 192.168.66.2)
[mysqld(API)] 2 node(s)
id=4 @192.168.66.2 (mysql-5.1.44 ndb-7.1.3)
id=5 @192.168.66.113 (mysql-5.1.44 ndb-7.1.3)
ndb_mgm>
我现在花了很多时间试图找出问题所在,但无济于事。还请查看第一个管理服务器的ndb_mgmd日志文件,该文件摘录是在从192.168.66.2启动第二个ndb_mgmd之后立即进行的:
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Reading cluster configuration from 'c:/Progra~1/mysql-cluster-gpl-7.1.3-win32/config.ini'
2010-05-21 16:05:04 [MgmtSrvr] WARNING -- at line 45: Cluster configuration warning:
arbitrator with id 6 and db node with id 2 on same host 192.168.66.2
Running arbitrator on the same host as a database node may
cause complete cluster shutdown in case of host failure.
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Config equal!
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Mgmt server state: nodeid 1 reserved for ip 192.168.66.114, m_reserved_nodes 1.
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Id: 1, Command port: *:1186
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 127.0.0.1:3727: Connected!
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- Sending CONFIG_CHECK_REQ to 1
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- Got CONFIG_CHECK_REQ from node: 1. Our generation: 1, other generation: 1, our state: 2, other state: 2, our checksum: 0xc7202738, other checksum: 0xc7202738
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- Send CONFIG_CHECK_CONF to node: 1
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- Got CONFIG_CHECK_CONF from node: 1
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.113:51051: Connected!
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.2:65492: Connected!
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Node 1: Node 6 Connected
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Node 6 connected
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- Sending CONFIG_CHECK_REQ to 6
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- Got CONFIG_CHECK_CONF from node: 6
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Node 1: Node 3 Connected
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.113:51051: Stopped!
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.113:51051: Disconnected!
2010-05-21 16:05:04 [MgmtSrvr] INFO -- Node 1: Node 2 Connected
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.2:65492: Stopped!
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.2:65492: Disconnected!
2010-05-21 16:05:05 [MgmtSrvr] INFO -- Node 3: Prepare arbitrator node 1 [ticket=16800008ebadb656]
2010-05-21 16:05:05 [MgmtSrvr] INFO -- Node 2: Started arbitrator node 1 [ticket=16800008ebadb656]
我个人从上面的输出中发现以下两行很有趣:
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.2:65492: Stopped!
2010-05-21 16:05:04 [MgmtSrvr] DEBUG -- 192.168.66.2:65492: Disconnected!
虽然没有错误消息,但仅显示Stopped and Disconnected。
谁能弄清楚我的设置有什么问题?任何帮助将不胜感激。
最佳答案
http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html
上面的链接是我用来实施群集设置的分步指南。本文适用于基于Linux的安装程序,但步骤与Windows安装程序几乎相同。对于Windows,命令行语法当然是不同的。您需要处理的唯一区别是将MySQL群集文件放置在Windows框上的适当位置,然后手动安装服务。完成此操作之后,就没有区别了,所有操作都在配置文件中完成。
对于初学者,您可以复制安装文件,然后从命令行启动所有内容。这样,您会发现对可能出现的任何问题进行故障排除很容易,因为您会在命令提示符窗口中看到错误。否则,您首先需要配置日志记录,然后再查看日志以了解发生的情况。请注意,您必须是一名魔术师,才能使所有功能从第一次尝试开始就可以正常工作,因此请不要使用入门记录程序,而直接在命令提示符窗口中查看集群服务的输出。
如果您设法使所有工作正常进行,则应继续在Windows下将“守护程序”作为服务安装。如果需要帮助,我可以为您提供帮助。事实证明,安装服务可能是一项非常棘手的任务-尽管前一段时间我安装了群集,但我记得安装服务花了我一些时间。我是在反复试验的基础上做到的。从内存中,安装服务时,路径中仅应使用8.3名称。否则,我的启动失败(或作为服务安装,不记得了)。