如何在mysql中搭建集群

分类:编程技术 时间:2024-02-20 15:27 浏览:0 评论:0
0
如何在 MySQL 中构建集群。针对这一问题,本文详细介绍了相应的分析和解答。希望能够帮助更多想要解决这个问题的朋友找到更简单、更容易的方法。

MySQL Cluster是MySQL的高可用、高冗余版本,适用于分布式计算环境。它使用NDB Cluster存储引擎,允许多个MySQL服务器在1个集群中运行。该存储引擎提供MySQL 5.0及以上版本的二进制版本,以及与最新Linux版本兼容的RPM包。

MySQL Cluster 是一种允许在无共享系统中部署“内存中”和“磁盘上”数据库集群的技术。通过无共享架构,系统可以使用廉价的硬件,并且对软硬件没有特殊要求。此外,由于每个组件都有自己的内存和磁盘,因此不存在单点故障。 MySQL Cluster 由一系列计算机,每台计算机都运行各种进程,包括 MySQL 服务器、NDB Cluster 的数据节点、管理服务器和(可能)专门的数据访问程序。

管理服务器(MGM节点)负责管理Cluster配置文件和Cluster日志。集群中的每个节点都从管理服务器检索配置数据。当数据节点内发生新事件时,该节点会将有关此类事件的信息传输到管理服务器,然后管理服务器将信息写入群集日志。

目前能够运行MySQL Cluster的操作系统包括Linux、Mac OS X和Solaris。最新版本已经支持Windows操作系统。

MySQL集群的数据节点之间的通信没有加密,需要高速带宽。因此,建议在高速局域网中建立集群。不建议跨网段或跨公网部署网络。系统的一种。

MySQL集群分为三类节点:管理节点、数据节点和SQL节点。

管理节点:主要用于管理各个节点。它可以通过命令对节点进行重启、关闭、启动等操作。还可以监控所有节点的工作状态。

数据节点:主要存储数据,不提供其他服务。

SQL节点:主要对外提供SQL功能,类似于普通的MySQL Server。

SQL节点和数据节点可以是同一台机器,也就是说这台机器既是SQL节点又是数据节点。它们只是逻辑上的划分。在实际部署中,所有阶段甚至可以位于同一台物理机上,但配置较为复杂。



1、软件下载机器运行环境

配置MySQL集群,必须使用其集群版本,付费注意MySQL Server版本差异。本文以Windows平台上的MySQL集群版本MySQL Cluster 7.1.3(截至2010年6月上旬的最高版本)为例。这是MySQL Server 5.1系列版本之一,增加了集群功能。下载地址为:http://dev.mysql.com/downloads/cluster,选择mysql-cluster-gpl-noinstall-7.1.3-win32.zip文件,该文件是Windows的32位版本。免安装二进制版本。

根据您操作系统的位数,您还可以选择 64 位版本。还有一个 27.2M Windows(x86,32 位)版本。下载后需要自己编译。有经验的高级用户可以选择。

本实验在两台安装了 Windows Server 2003 (sp2) 的计算机上进行。节点分配及IP配置如下:

第一台机器,IP 10.0.0.201,作为管理节点(MGM)、SQL节点1(SQL1)、数据节点1(NDBD1) 。

第二台计算机的 IP 为 10.0.0.202,充当 SQL 节点 2 (SQL2) 和数据节点 2 (NDBD2)。

管理节点最好不要和数据节点部署在同一台服务器上,否则可能会因为数据节点服务器崩溃而导致管理节点服务器出现问题,从而导致整个集群崩溃系统崩溃。

2、配置管理节点:

在第一台机器上,创建文件夹D:/mysql-cluster,并在其下创建config.ini文件。内容如下:

[NDBD DEFAULT]

NoOfReplicas=1

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP 默认值]

# 管理服务器

[NDB_MGMD]

hostname=10.0.0.201

< p> # 存储引擎

 [NDBD]

 hostname=10.0.0.201

 datadir= D:/data

[NDBD]

hostname=10.0.0.202

datadir= D:/data

# SQL 引擎

[MYSQLD ]

主机名=10.0.0.201

[MYSQLD]

主机名=10.0.0.202

Cluster管理节点默认端口为1186,数据节点默认端口为2202。从MySQL 5.0.3开始,放宽了这个限制,Cluster可以自动为数据分配端口基于自由端口的节点。如果您的版本低于5.0.22,请注意此细节。

Cluster管理节点作为服务器(通过运行db_mgmd.exe程序读取该配置文件启动),通过本机的客户端ndb_mgm.exe进行连接和操作。

3、配置MySQL数据库服务器:

在2台机器上,依次操作。

将mysql-cluster-gpl-noinstall-7.1.3-win32.zip文件解压到D:/mysql-cluster-gpl-noinstall-7.1.3-win32文件夹,并放入D:/ mysql -cluster-gpl-noinstall-7.1.3-win32/bin 添加到 Windows 系统路径。

打开DOS命令行窗口(配置系统路径后,再次打开新的命令行窗口),执行以下状态让MySQL作为Windows服务运行:

mysqld.exe -install mysql

然后在Windows服务管理界面,配置mysql服务并手动启动(不要启动)自动)。

将 D:/mysql-cluster-gpl-noinstall-7.1.3-win32 下的备用配置文件(例如 my-small.ini)复制到 my.ini 文件中。

创建 D:/tmp 文件夹。

4、配置SQL节点和数据节点:

在两台机器上依次执行操作。

创建文件夹 D:/data。

 编辑NySQL配置文件D:/mysql-cluster-gpl-noinstall-7.1.3-win32/my.ini,在[mysqld]部分末尾添加语句:

#SQL集群节点

ndbcluster

ndb-connectstring=10.0.0.201

通过ndbcluster语句,将启动mysql服务作为集群的SQL节点。使用参数 –ndbcluster 运行 mysqld.exe 命令具有相同的效果。

mysql服务是c连接到数据节点的默认2202端口,或自动分配的其他可用端口。

(问题:SQL节点如何获取数据节点的IP地址?是否可以通过连接管理节点来获取所有数据节点的IP地址列表?)

这里的连接字符 MySQL服务开始连接管理节点时使用该字符串的值。

在最后添加语句:

#NDB集群节点

[mysql_cluster]

ndb-connectstring=10.0。 0.201

注:似乎也可以采用以下形式:

[ndbd]

ndb-connectstring=10.0.0.201

这里的连接字符串的值是在数据节点启动连接管理节点时使用的。

5、启动集群中各服务器

启动顺序为:管理节点、数据节点、SQL节点。

1.启动管理节点

在DOS窗口中第一台服务器,运行命令:

C:/>ndb_mgmd.exe -f d:/mysql-cluster.conf/ config.ini –configdir=d:/mysql-cluster

注意:如果不使用–configdir=d:/mysql-cluster参数,则默认为C:/mysql/mysql-cluster文件夹。

屏幕显示:

C:/>ndb_mgmd.exe -f d:/mysql-cluster.conf/config.ini –configdir=d:/mysql-cluster

2010-06-10 01:16:57 [MgmtSrvr] INFO — NDB 集群管理服务器。 mysql-5.1.44 ndb-7.1.3

2010-06-10 01:16 :57 [MgmtSrvr] INFO — 从 'd:/mysql-cluster.conf/config.ini 读取集群配置'

2010-06-10 01:16:57 [MgmtSrvr] INFO — 从 'd:/mysql-cluster.conf/config.ini' 获取初始配置,将在所有情况下尝试设置它ndb_mgmd(s) 已启动

2010-06-10 01:16:57 [MgmtSrvr] INFO   — Mgmt 服务器状态:为 ip 10.0.0.201 保留的 nodeid 1,m_reserved_nodes 1。

2010-06-10 01:16:57 [MgmtSrvr] INFO — ID:1,命令端口:*:1186

==初始==

2010- 06-10 01:16:57 [MgmtSrvr] INFO — 开始初始配置更改

2010 -06-10 01:16:57 [MgmtSrvr] INFO — 已提交配置 1

2010-06-10 01:16:57 [MgmtSrvr] 信息 — 配置更改已完成!新生代:1

==已确认==

2、启动数据节点

分别在两台服务器的DOS窗口中运行命令。

第一次,或者初始化集群节点时,运行命令:

ndbd.exe –initial

初始化完成后,只需运行ndbd.exe即可。如果使用参数-initial运行,正常运行的集群系统中数据节点上的所有数据都将丢失。

数据节点依靠管理节点服务器自动进行数据复制和同步,保持各数据节点的数据一致,并在数据节点意外关闭和恢复后进行数据复制。数据。

3.启动SQL节点

通过ndbcluster语句,启动mysql服务并启动SQL 节点。应该在前两种类型的节点启动后在两台服务器上完成。

6.集群管理

在所有数据节点和SQL节点启动之前,运行集群管理节点服务的客户端ndb_mgm.exe只能获取以下信息:

p>

C:/>ndb_mgm.exe

— NDB Cluster — 管理客户端 –

ndb_mgm> show

Cluster配置

————————

[ndbd(NDB)] 2节点

id=2(未连接,接受来自 10.0.0.201 的连接)

id=3(未连接,接受来自 10.0.0.202 的连接)

[ndb_mgmd(MGM)] 1 个节点

id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 个节点

id=4(未连接,接受来自 10.0.0.201 的连接)

id=5(未连接,接受来自 10.0.0.202 的连接)

ndb_mgm>

说明 数据节点和SQL节点均未连接管理节点服务。

所有数据节点和SQ之后l 节点启动正确,会得到如下信息:

ndb_mgm> show

Cluster Configuration

——————

[ndbd(NDB)] 2 个节点

id=2 @10.0.0.201 (mysql-5.1.44 ndb -7.1.3, Nodegroup: 0, Master)

id=3 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3,节点组:1)

[ndb_mgmd(MGM)] 1 个节点< br/>
id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 个节点

id=4 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

id=5@10.0.0.202 (mysql-5.1.44 ndb-7.1.3)

ndb_mgm>

关闭集群的DOS命令:

ndb_mgm -e shutdown

或者在ndb_mgm环境下执行shutdown命令。

上述命令可能会关闭管理节点服务和所有数据节点。随意、强行关闭集群系统(shutdown或者shutdown进程)会因为数据没有全部写回磁盘而导致数据丢失。

关闭SQL nod的mysqld服务e:

C:/>net stop mysql, 或:

C:/>mysqladmin -u root shutdown

7. 测试

<在正常运行的MySQL集群系统中,可以通过SQL节点对数据节点进行数据库操作,并且各个数据节点可以自动同步数据。某个数据节点关闭后,SQL节点的使用不会受到影响。部分数据节点出现错误后可以恢复。需要注意的是,SQL节点创建数据库时,必须选择“ndbcluster”数据库引擎。如果不选择“ndbcluster”引擎,创建的数据库不会进入MySQL集群系统,但可以独立使用。

另外,每个NDB表都必须有一个主键。如果创建表时未定义主键,NDB Cluster存储引擎会自动生成隐式主键。隐式键也会占用空间,就像任何其他表索引一样。由于内存不足而出现问题的情况并不少见以容纳这些自动创建的键。

测试示例:

在某个SQL节点登录mysql,创建表city,插入数据:

C:/>mysql - u root测试

mysql>创建表city(nIdmediumint unsigned not null auto_increment主键,sName varchar(20) not null)

engine = ndbcluster default charset utf8;< br/>
mysql>插入城市值(1, 'city-1');

mysql>插入城市值(1, 'city-2');

< p> 登录另一个SQL节点上的mysql,从表city中获取记录:

C:/>mysql -u root test

mysql>select * from city ;

当集群系统正常工作时,之前插入的所有记录都应该可用。

附加测试(单点故障测试):

1、也可以手动停止某个数据节点(Ctrl+C 中断DOS命令ndbd.exe停止服务) ,查看所有SQL节点是否工作正常。

2、某个数据节点停止后,执行数据库操作。然后重启数据节点,看看集群中所有的SQL节点是否都能获取完整的数据。

8. 常见问题和扩展

配置和管理MySQL集群系统并不是一件简单的事情。由于配置不合理而导致的系统问题非常常见,例如网络故障、内存限制等,这些问题都会导致仲裁系统强行关闭数据节点。

  如果机器上已经安装了MySQL Server,则必须卸载原来的数据库系统。请注意,集群系统上的 mysql.exe 程序与非集群系统上的管理客户端不同。

还可以与负载均衡系统结合,提供更强的可用性和数据访问效率。

由于未知的Bug或者其他原因,集群系统可能会出现一些意外的故障。因此,建议在选择版本时,选择已被认可的版本大多数人都知道,不一定是最新版本,它通常不太稳定。当然,不要选择功能有限的过时版本。

关于如何在MySQL中构建集群的问题的答案在这里分享。希望以上内容能够对大家有所帮助。如果你还有很多疑惑没有解决,可以关注。行业资讯频道了解更多相关知识。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在mysql中搭建集群

用户评论