MySQL集群支持多台电脑,本文搭建的MySQL集群以两台机子为例,其中一台(IP为192.168.24.33)部署管理节点、数据节点和SQL节点,另一台(IP为192.168.24.82)部署数据节点和SQL节点。
实际应用中,不要将管理节点跟数据节点部署到一台机子上,因为如果数据节点宕机会导致管理节点不可用,同时整个MySQL群集也就都不可用了。所以一个MySQL群集理想情况下至少有三台服务器,将管理节点单独放到一台服务器上。这里以两台举例,只是为了说明三种节点的配置启动方法。
注意:本人使用的MySQL Cluster版本为:mysql-cluster-gpl-7.3.X-winx64.zip 之后的版本结构不一样,部署的方式略有不同 ,系统环境为win7,win10因为权限调整,会比较麻烦
简单介绍一下MySQL集群涉及的三种节点:
管理节点(也可以称管理服务器)是整个集群环境的核心,类似于集群中起调度作用的枢纽,由它来负责管理其它节点(数据节点和SQL节点)的开启、关闭或重启某个节点等等;其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入群集日志。该管理节点也是从mysql 5.6版本之后才出现,可见数据库对于搭建集群这个方向正在提出新的需求和新的挑战,也许在之后的版本中搭建集群将变的非常简单,期待后续版本功能更强大。
数据节点用于存储数据,如用户的数据、数据库、表、视图、存储过程等都保存在数据节点中。
SQL节点(即MySQL Service服务器)跟一般的MySQL服务器是一样的,通过它来对数据进行管理和维护工作,为数据库提供各种服务,如操作数据库、安全、备份。
下面简单介绍MySQL集群的搭建过程:
一、本实例MySQL集群所需环境
1.两台电脑(本人使用两台Windows8 操作系统的电脑)。
2.MySQL Cluster软件,官网地址:http://dev.mysql.com/downloads/cluster/
(本人使用的MySQL Cluster版本为:mysql-cluster-gpl-7.3.5-winx64.zip)
注意:下载合适的MySQL版本,包括平台和安装方式,推荐下载zip版本,便于配置和迁移
二、配置MySQL Cluster
1.配置管理节点
1.1 在IP为192.168.24.33的主机的C盘根目录中新建文件夹mysql,然后在此文件夹下新建子目录bin和mysql-cluster,再将安装包中的bin目录下的ndb_mgm.exe和ndb_mgmd.exe拷贝到C:\mysql\bin下。在目录C:\mysql\bin下新建cluster-logs目录、config.ini文件和my.ini文件。
1.2 config.ini文件内容如下:
1.3 my.ini中的内容如下
2.配置数据节点
2.1 在IP为192.168.24.33的主机中新建文件夹C:\mysqlcluster\datanode\mysql,然后在此文件夹(mysql)中继续新建子目录bin和cluster-data,bin下再建一个子目录也叫cluster-data。
2.2 将安装包data目录下的所有文件拷贝到C:\mysqlcluster\datanode\mysql\cluster-data下
2.3 将安装包中bin目录下的ndbd.exe拷贝到C:\mysqlcluster\datanode\mysql\bin下,并在C:\mysqlcluster\datanode\mysql中新建my.ini文件,文件内容为:
注:因为各数据节点的配置是一样的,所以我们可以直接将192.168.24.33主机中的文件夹C:\mysqlcluster拷贝到192.168.24.82主机的C盘下,并无需任何更改。
3.配置SQL节点
3.1 在192.168.24.33主机的C:\mysqlcluster下新建子目录sqlnode,在C:\mysqlcluster\sqlnode下新建子目录mysql,将安装包文件解压到mysql目录下,然后在C:\mysqlcluster\sqlnode\mysql下新建my.ini文件,文件内容为:
3.2 将my-default.ini 文件删除或更名为my-default.ini.bak
注:因为各SQL节点的配置是一样的,所以我们可以直接将192.168.24.33主机中的文件夹C:\mysqlcluster拷贝到192.168.24.82主机的C盘下,并无需任何更改。
三、启动MySQL Cluster
在启动MySQL Cluster之前,首先要做的是保证每个SQL节点上的MySQL服务能够启动成功,并为每个SQL节点进行相关权限的分配以保证能够远程登录访问。然后依次启动三种节点。三种节点服务启动时,一定要按照先启动管理节点,后启动数据节点,再启动SQL节点的顺序进行。
1.启动MySQL服务
1.1 进入C:\mysqlcluster\sqlnode\mysql\bin目录下,使用mysqld –install安装MySQL服务
1.2 使用net start mysql命令启动MySQL服务(如果已经安装MySQL服务,就不必进行第1步操作)
若没安装MySQL服务,先安装MySQL服务再开启MySQL服务,按如下图片进行
注:依次运行各个SQL节点,保证MySQL服务正确启动。
2.配置MySQL远程连接
2.1 进入C:\mysqlcluster\sqlnode\mysql\bin目录下,使用mysql -uroot -p,然后输入密码,设置root用户密码。(注:刚安装的MySQL,默认密码为空!)
2.2 切换到mysql数据库,输入以下命令,为root用户分配远程连接的相关权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
接下来依次启动各节点:
3.启动管理节点
在192.168.24.33主机中打开命令行窗口,切到C:\mysql\bin目录,输入
ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster
回车,管理节点服务就启动了,命令行上可能没有任何提示信息,可以打开C:\mysql\bin\cluster-logs\ndb_1_cluster.log日志文件查看启动信息。
注意:此行命令行窗口不能关闭,除非想停止服务。
4.启动数据节点
4.1 在192.168.24.33主机中打开新命令行窗口,切到C:\mysqlcluster\datanode\mysql\bin,输入 ndbd,按回车,数据节点就启动了
4.2 以相同的方法在其他数据节点,即192.168.24.82中启动数据节点服务。
4.3 查看数据节点及SQL节点连接情况
在192.168.24.33主机中打开新命令行窗口,切到目录C:\mysql\bin,输入:ndb_mgm;按回车,再输入:
ALL STATUS,回车,就可以查看数据节点的连接信息了(若使用Show 会查看到各管理节点、数据节点、SQL节点的连接信息)
5.启动SQL节点
5.1 在192.168.24.16主机中打开新命令行窗口,切到C:\mysqlcluster\sqlnode\mysql\bin,输入:
mysqld--console;回车,SQL节点启动。
5.2 以相同的方法在其他SQL节点,即192.168.24.82中启动SQL节点。
按上一步(4.3)查看方法,使用show命令,查看各SQL节点连接情况。若出现上图情况,表示各节点均已连接成功!
四、测试MySQL Cluster
在任一SQL节点,即192.168.24.33主机上新创建一个数据库mytestmysql,可以看到其他SQL结点,即192.168.24.82均创建了一个mytestmysqlB数据库。在一台机子上对数据表进行任何操作,另一台机子上的数据库也会进行相应的操作。
注意: 为了让数据表能够在cluster中正常复制,创建数据表时必须指定为ndbcluster引擎(engine=ndb或engine=ndbcluster)。
NDB存储引擎
NDB存储引擎是一个集群存储引擎,类似于orcle的rac集群,不过与rac share everything结构不同的是,其结构是share nothing的集群结构,因此能提供更高级别的高可用性。
特点:
1,数据全部放在内存中,从5.1版本开始,可以将非索引数据放在磁盘上,因此主键查找的速度极快,并且通过添加ndb数据存储引擎节点(Data Node)可以线性地提高数据库性能,是高可用,高性能的集群系统。
2,ndb存储引擎的连接操作(join)是在mysql数据库层完成的,而不是在存储引擎层完成的,这意味着复杂的连接操作需要巨大的网络开销,因此,查询速度很慢,这是ndb的瓶颈。
至此,Windows平台搭建MySQL集群的过程就介绍完了!