【问题标题】:mysql cluster in CentOSCentOS 中的 mysql 集群
【发布时间】:2013-02-11 12:42:35
【问题描述】:

我正在尝试在 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'.

并且在存储服务器节点中,显示的警告是:

[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

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

谢谢!

【问题讨论】:

    标签: mysql centos cluster-computing


    【解决方案1】:

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


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

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

    如果您想试用浏览器驱动的自动安装程序以简化您的生活,请查看http://www.clusterdb.com/mysql-cluster/auto-installer-labs-release/,或者如果您想手动设置,请查看@987654322 @


    你好安德鲁,

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

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

    shell> /usr/local/mysql/bin/ndbd --connect-string=192.168.56.101 -- 天使连接到 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,开始,节点组: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 启动 启动 MySQL..................................服务器退出而不更新 PID 文件(/usr/loca/mysql/数据/localhost.node2-1. {FAILED])

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

    一开始我有:

    -- my.cnf --

    [mysqld] 数据目录=/var/lib/mysql socket=/var/lib/mysql/mysql.sock 用户=mysql 符号链接=0

    [mysqld_safe] 日志错误=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

    在我添加了 ndbcluster 配置之后:

    -- my.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] 日志错误=/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 连接,节点 [all: 2 and 3 connected: 3 no-wait:]

    即使我试图从 mgm 开始他们:

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

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

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

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


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

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

    见:http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-serverporthttp://johanandersson.blogspot.com/2009/05/cluster-fails-to-start-self-diagnosis.html


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

    非常感谢马修和安德鲁!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-21
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多