MySQL集群的架构图:
优点:
a)99.999%的高可用性
缺点:
管理节点:
用于给整个集群其他节点提供配置、管理、仲裁等功能。理论上通过一台服务器提供服务就可以了。
数据节点:
MySQL Cluster的核心,存储数据、日志,提供数据的各种管理服务。2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。
MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。
MySQL集群配置-Window
1.下载MySQL Cluster 7.4.12
>>>下载图:
2.服务器配置
>>>需要5台服务器:1台配置管理节点、2台配置数据节点、2台配置SQL节点
>>>以下是我5台服务器的IP:
>>>管理节点:172.18.0.1
>>>管理节点:172.18.0.2
>>>管理节点:172.18.0.3
>>>管理节点:172.18.0.4
>>>管理节点:172.18.0.5
>>>在每台服务器上创建目录C:/mysql并将下载好的MySQL Cluster解压到里面
[mysql_cluster]
config-file=C:/mysql/bin/config/config.ini
>>>config.ini配置内容如下
[ndbd default]
NoOfReplicas=2
DataDir=C:/mysql/bin/cluster-data <span style="font-size: 18.144px; font-family: "Open Sans", Arial, Helvetica, sans-serif;">#配置数据节点数据存储的位置</span><span style="font-size: 18.144px; font-family: "Open Sans", Arial, Helvetica, sans-serif;"> </span>
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
HostName=172.18.0.1 #管理节点
DataDir=C:/mysql/bin/cluster-logs #配置日志存放位置
[ndbd]
HostName=172.18.0.2 <span style="font-size: 18.144px; font-family: "Open Sans", Arial, Helvetica, sans-serif;">#数据节点A </span>
[ndbd]
HostName=172.18.0.3 <span style="font-size: 18.144px; font-family: "Open Sans", Arial, Helvetica, sans-serif;">#数据节点B </span>
[mysqld]
HostName=172.18.0.4 #SQL节点A
[mysqld]
HostName=172.18.0.5 #SQL节点B
c:\mysql\bin\ndb_mgmd.exe --configdir=c:\mysql\bin\config --config-file=c:\mysql\bin\config\config.ini --ndb-nodeid=1 --reload –initial
c:\mysql\bin\ndbd.exe --ndb-connectstring=172.18.0.1
>
>>另一个数据节点同上
c:\mysql\bin\mysqld.exe --ndbcluster --ndb-connectstring=172.18.0.1 --console
>>>另一个SQL节点同上
>>>现在可以在管理节点所在的服务器上查询连接的数据节点和SQL节点信息
c:\mysql\bin\ndb_mgm
>>>打开后执行show命令
四、测试MySQL集群
1、在sql节点A建立数据库并插入数据:
在sql节点A的计算机上(172.18.0.4)的cmd中运行C:\mysql\bin\mysql.exe -u root -p命令登录mysql,接下来需要输入密码时,密码默认为空(直接回车)。
创建数据库并插入数据:
—–创建名为”MySQL_Cluster_Test”的数据库:
—–创建表”T_User”:
注意建表语句后面一定要加上 engine=ndbcluster
—–插入数据:
—–查询数据:
2、在sql节点B也可以查询到数据。
同样在sql节点B的计算机上(172.18.0.5)的cmd中运行C:\mysql\bin\mysql.exe -u root -p命令登录mysql。
执行 show databases; 命令可以查看到在sql节点A新建的数据库;
执行use MySQL_Cluster_Test;
select * from T_User;
可以查询到在sql节点A插入的数据。
到这里,整个集群的搭建和测试就完成了。假如一个数据节点宕机,并不会影响整个集群的运行,任何一个数据节点死掉甚至物理损坏都不用担心,因为每个数据节点保存的数据都是完整的一份数据(在你操作数据的时候,它早就自动为你把最新的数据备份到每一个数据节点上啦)。你可以测试一下,这时手动停止某个数据节点和sql节点,另外一个数据节点和sql节点还会正常运行。当你把停止的数据节点和sql节点重新启动时,会发现又重新连接到集群里了,而且每个数据节点的数据都是最新的。