Mysql群集(Cluster)简介
MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的。MySQL群集中有三种节点:管理节点、数据节点和SQL节点。群集中的某计算机可 能是某一种节点,也可能是两种或三种节点的集合。这三种节点只是在逻辑上的划分,所以它们不一定和物理计算机是一一对应的关系。
管理节点(也可以称管理服务器)主要负责管理数据节点和SQL节点,还有群集配置文件和群集日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某 个节点。其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入群集日志。
数据节点用于存储数据。
SQL节点跟一般的MySQL服务器是一样的,我们可以通过它进行SQL操作。
下图中画出了三种群集节点及应用程序间的关系:
MySQL Cluster的下载
我们使用的Mysql Server已经不能满足群集的要求,配置群集需要使用MySQL Cluster,即只要下载MySQL Cluster就可以了,无须再下载安装MySQL Server. 因为MySQL Cluster中已经自带了。
MySQL Cluster支持Linux、Mac OS X、Solaris和Windows操作系统。以Windows系统下的MySQL Cluster版本MySQL Cluster 7.2.5为例说明MySQL Cluster的配置和启动。
MySQL Cluster的下载地址是http://dev.mysql.com/downloads/cluster。 如果你的操作系统是32位的,就选择Windows (x86, 32-bit), ZIP Archive下载,大小为228.9M,如果是64位的,就下载Windows (x86, 64-bit), ZIP Archive,大小为232.7M。它们都是免安装的二进制版本。
MySQL Cluster的配置
首 先找三台电脑,或者是开三个虚拟机,管理节点部署在一台机子上,其他两台每台都部署一个数据节点和一个SQL节点。这里以两台机子举例,其中一台 (IP为192.168.1.10)部署管理节点、数据节点和SQL节点,另一台(IP为192.168.1.20)部署数据节点和SQL节点。
其 实最好不要将管理节点跟数据节点部署到一台机子上,因为如果数据节点宕机会导致管理节点也不可用,整个MySQL群集就都不可用了。所以一个MySQL群 集理想情况下至少有三台服务器,将管理节点单独放到一台服务器上。鸡啄米暂以两台举例,只是为了说明三种节点的配置启动方法。
1.将上面下载的安装包解压,并改文件夹名为mysql,因为需要多次在命令行中操作,所以名字改短后更容易输入。
2.配置管理节点
在IP为192.168.1.10的主机的C盘中新建文件夹mysql,然后在此文件夹下新建子目录bin和mysql-cluster,再将安装包解压 后的mysqlin中的ndb_mgm.exe和ndb_mgmd.exe拷贝到C:mysqlin下。在目录C:mysqlin下新建 cluster-logs目录、config.ini文件和my.ini文件。
config.ini文件内容如下:
[ndbd default] # Options affecting ndbd processes on all data nodes: # Number of replicas NoOfReplicas=2 # Directory for each data node's data files DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data # Memory allocated to data storage DataMemory=80M # Memory allocated to index storage IndexMemory=18M # For DataMemory and IndexMemory, we have used the # default values. [ndb_mgmd] # Management process options: # Hostname or IP address of management node HostName=10.0.0.11 # Directory for management node log files DataDir=C:/mysql/bin/cluster-logs [ndbd] # Options for data node "A": # (one [ndbd] section per data node) # Hostname or IP address HostName=10.0.0.11 [ndbd] # Options for data node "B": # Hostname or IP address HostName=10.0.0.10 [mysqld] # SQL node options: # Hostname or IP address HostName=10.0.0.11 [mysqld] # SQL node options: # Hostname or IP address HostName=10.0.0.10
my.ini文件内容如下:
[mysql_cluster] # Options for management node process config-file=C:/mysql/bin/config.ini
3.配置数据节点
在IP为192.168.1.10的主机中新建文件夹C:mysqlclusterdatanodemysql,然后在此文件夹中继续新建子目录bin和cluster-data,bin下再建一个子目录也叫cluster-data。
将安装包解压文件夹中mysqlin中的ndbd.exe拷贝到C:mysqlclusterdatanodemysqlin下,并在C:mysqlclusterdatanodemysql中新建my.ini文件,文件内容为:
[mysql_cluster] # Options for data node process: ndb-connectstring=192.168.1.10 # location of management server
因为两台主机的数据节点的配置是一样的,所以我们可以直接将192.168.1.10主机中的文件夹C:mysqlcluster拷贝到192.168.1.20主机的C盘下。
4.配置SQL节点
在192.168.1.10主机的C:mysqlcluster下新建子目录sqlnode,将安装包解压文件夹mysql整个拷贝到这个子目录下,然后在C:mysqlclustersqlnodemysql下新建my.ini文件,文件内容为:
[mysqld] # Options for mysqld process: ndbcluster # run NDB storage engine ndb-connectstring=192.168.1.10 # location of management server
之后也把C:mysqlclustersqlnode文件夹整个拷贝到192.168.1.20主机的相同目录下。
MySQL Cluster的启动
三种节点服务启动时,一定要按照先启动管理节点,后启动数据节点,再启动SQL节点的顺序进行。
1.启动管理节点
在192.168.1.10主机中打开命令行窗口,切到C:mysqlin目录,输入:
ndb_mgmd -f config.ini --configdir=C:mysqlmysql-cluster
回车,管理节点服务就启动了,命令行上可能没有任何提示信息,可以打开C:mysqlincluster-logs db_1_cluster.log日志文件查看启动信息。注意,此命令行窗口不能关闭,除非你想停止服务。
注:我们也可以将其做成服务,在命令行中输入:
ndb_mgmd --install=ndb_mgmd -f config.ini --configdir=C:mysqlmysql-cluster
2.启动数据节点
在192.168.1.10主机中打开一个新的命令行窗口,切到目录C:mysqlclusterdatanodemysqlin,输入:
ndbd
回车,数据节点就启动了。
注:我们也可以将其做成服务,在命令行中输入:
ndbd --install=ndbd
以相同的方法在192.168.1.20中启动数据节点服务。
如何查看是否启动成功呢?我们可以在192.168.1.10主机中再新开一个命令行窗口,切到目录C:mysqlin,输入:
ndb_mgm
回车,然后再输入:
ALL STATUS
回车,就可以看到数据节点的连接信息了。
3.启动SQL节点
在192.168.1.10主机中继续打开一个新的命令行窗口,切到目录C:mysqlclustersqlnodemysqlin,输入:
mysqld --console
回车,SQL节点启动。
注:我们也可以将其做成服务,输入:
mysqld -install mysql
以相同的方法在192.168.1.20中启动SQL节点。
想要查看SQL节点的启动情况可以在192.168.1.10主机中同样打开新命令行,输入:
ndb_mgm
回车,再输入:
SHOW
回车,就可以看到SQL节点的连接情况了。
测试MySQL集群
数据库并插入数据">1、在sql节点A建立数据库并插入数据:
在sql节点A的计算机上(192.168.1.10)的cmd中运行C:mysqlclustersqlnodemysqlinmysql.exe -u root -p命令登录mysql,接下来需要输入密码时,密码默认为空(直接回车)。
创建数据库并插入数据:
—–创建名为”MySQL_Cluster_Test”的数据库:
create database MySQL_Cluster_Test;
—–创建表”T_User”:
use MySQL_Cluster_Test; create table T_User(Name varchar(32),Age int) engine=ndbcluster;
注意建表语句后面一定要加上 engine=ndbcluster
—–插入数据:
insert into T_User values('DannyHoo',26);
—–查询数据:
select * from T_User;