mysql - CentOS中的mysql集群

标签 mysql centos cluster-computing

我试图在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.

我按照以下步骤配置整个集群:
配置管理服务器节点(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)

管理节点配置正常,所以我们配置一个存储服务器节点(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

这就是问题所在。在管理服务器中,将显示下一个错误:
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论坛上给出的响应。。。
看起来您正在尝试将存储库中的管理节点二进制文件(非常旧的版本)与非集群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—连接字符串=192.168.56.101
--天使连接到192.168.56.101:1186
--天使分配的节点ID:2
另外,我使用命令show检查了manage节点:
ndb_mbm>显示
群集配置
[ndbd(NDB)]2个节点
id=2@192.168.50.102(mysql-5-5.29 ndb-7.2.10,开始,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启动
启动MySQL……………服务器在没有更新PID文件(/usr/loca/MySQL/data/localhost.node2-1)的情况下退出。{失败])
我检查了这个问题,mysql似乎不喜欢我在/etc/my.cnf中编写的配置。
在乞讨时我有:
--我的.cnf--
[我的qld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
用户=mysql
符号链接=0
[mysqld_安全]
日志错误=/var/log/mysqld.log
pid文件=/var/run/mysqld/mysqld.pid
在我添加了ndbcluster配置之后:
--我的.cnf--
[客户]
端口=3306
socket=/tmp/mysql.sock
[我的qld]
端口=3306
ndbcluster公司
ndb连接字符串=192.168.56.107
[mysqld_集群]
ndb连接字符串=192.168.56.107
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_安全]
日志错误=/var/log/mysqld.log
pid文件=/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,开始,Nodegroup:0)
id=3@192.168.50.103(mysql-5-5.29 ndb-7.2.10,开始,Nodegroup: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(未连接,接受来自任何主机的连接)
我检查了米高梅日志(ndb_l_cluster.log):
[MgmtSrvr]INFO--节点3:初始启动,等待2连接,节点[所有:2和3连接:3不等待:]
[MgmtSrvr]INFO--节点2:初始启动,等待3连接,节点[所有:2和3连接:3不等待:]
就连我也试着从米高梅开始:
ndb_-mgm>2开始
正在启动数据库节点2。
ndb_-mgm>3开始
正在启动数据库节点3。
但是没有“node 2:Start initiated”消息。。。
我用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
马修,你说得对!我允许所有节点之间的端口,一切正常!
非常感谢你,马修和安德鲁!

关于mysql - CentOS中的mysql集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082774/

相关文章:

iis-6 - 集群中可以有多个 ASP.NET 状态服务器服务吗?

php - Linux 和 Php : server with MySQL database with terminal

centos - 在 centos 上安装 kaltura 后 KMC 不加载

sql - WordPress 和 MySQL 排序规则

c++ - 我如何在 Jenkins 中使用 GoogleMock?

centos - memcached 无法在 CentOS 6.5 的 vagrant up 上启动

node.js - NodeJS 集群,有用的用例吗?

apache - 使用 mod_jk 负载均衡器为 JBoss 集群启用 gzip 压缩

mysql - 在 MySQL 中不可用

mysql - 更改 dockerized MySQL 数据库中的模式