先来看一张mysql集群的架构图:
上图一共分了四层:Applications、SQL、Storage、Management。
�CApplications主要是指需要连接数据库的应用程序;
�CSQL中每一个mysqld都是一个sql节点,Applications需要通过连接sql节点来存储数据,您可以把它看成应用程序与数据库集群进行数据交换的大门
�CStorage有‘仓库’的意思,所以数据都是存在数据节点(ndbd)中的,而且每个数据节点的数据都是一致的,都是一整套最新的数据
�CManagement中就是管理节点,一个MySQL中只有一个管理节点,用来管理其他节点
配置环境:
1、 windows7系统
2、 三台电脑或者虚拟机 Vmware 10 创建3台虚拟机
3、 mysql-cluster-gpl-7.4.7-win32
4、 全部把防火墙关了
5、 解压mysql-cluster-gpl-7.4.7-win32
拟定节点机器:
1、 管理节点: 192.168.131.128
2、 数据节点A: 192.168.131.129
3、 数据节点B: 192.168.131.131
4、 SQL节点A: 192.168.131.129
5、 SQL节点B: 192.168.131.131
管理节点机器配置:
管理节点机器建立如下文件夹:
1、C:\ProgramFiles\mysqlcluster\datanode\mysql\bin\cluster-data
2、C:\mysql\bin\cluster-logs
3、C:\mysql\mysql-cluster
4、C:\Program Files\MySQL\MySQL Server 5.6\mysql-cluster
在C:\mysql\bin路径下进行如下操作:
1、创建config.ini
2、创建my.ini
3、粘帖mysql-cluster-gpl-7.4.7-win32\mysql\bin\ndb_mgm.exe
4、粘帖mysql-cluster-gpl-7.4.7-win32\mysql\bin\ndb_mgmd.exe
如下图所示:
config.ini配置:
[NDBDDEFAULT]
NoOfReplicas=2
DataDir=C:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data
DataMemory=80M
IndexMemory=18M
[MYSQLDDEFAULT]
[NDB_MGMDDEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
ID=1
HostName=192.168.131.128#管理节点服务器
# StorageEngines
DataDir=C:/mysql/bin/cluster-logs
[NDBD]
ID=2
HostName=192.168.131.129#MySQL集群db1的IP地址
DataDir=C:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data
[NDBD]
ID=3
HostName=192.168.131.131#MySQL集群db2的IP地址
DataDir=C:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data
[MYSQLD]
ID=4
HostName=192.168.131.129
[MYSQLD]
ID=5
HostName=192.168.131.131
my.ini配置:
[mysql_cluster]
# Options for management node process
config-file=C:/mysql/bin/config.ini
==========================配置完成=======================
数据节点配置:
数据节点机器创建如下文件夹:
1、C:\ProgramFiles\mysqlcluster\datanode\mysql\bin\cluster-data
2、C:\Program Files\mysqlcluster\datanode\mysql\cluster-data
3、C:\Program Files\mysqlcluster\sqlnode //(SQL节点文件夹)
在C:\ProgramFiles\mysqlcluster\datanode\mysql\bin进行如下操作:
1、创建my.ini文件
2、粘帖mysql-cluster-gpl-7.4.7-win32\mysql\bin\ndbd.exe
my.ini配置:
[mysql_cluster]
# Options for data node process:
ndb-connectstring=192.168.131.128 # location of management server
另一台192.168.131.131数据节点同样配置。my.ini配置一样
==========================配置完成=======================
SQL节点配置:
在C:\Program Files\mysqlcluster\sqlnode下:
1、把mysql-cluster-gpl-7.4.7-win32文件改名为mysql
2、把mysql整个文件粘帖到此
3、在mysql根目录创建my.ini文件
my.ini配置:
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storageengine
ndb-connectstring=192.168.131.129 # location of management server
另一台192.168.131.131 SQL节点同样配置。my.ini配置为192.168.131.131
==========================配置完成=======================
一些空文件夹是用来存放一些缓存,
以及一些日志文件的,不用理会。只要创建空文件夹就行了。
至此,整个MySQL集群就搭建完成了。
启动服务前,我们需要到注册表去注册一下mysql
管理节点注册表设置:
//注册表
regedit--打开注册表
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\
下新建创建KEY 值
MySQL ClusterManagement Server
数据节点和SQL节点注册表统一配置:
regedit--打开注册表
在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\
下新建创建KEY 值
MySQL Cluster DataNode Daemon
启动数据库集群也是有顺序的。
管理节点à数据节点àSQL节点
以下都是cmd命令实现
//启动管理节点
切到:
C:\mysql\bin
输入:
ndb_mgmd -fconfig.ini --configdir=C:\mysql\mysql-cluster
//启动数据节点
启动数据节点
切到:
C:\ProgramFiles\mysqlcluster\sqlnode\mysql\bin
输入:
ndbd--connect-string="nodeid2;host=192.168.131.128:1186"
//nodeid2是根据管理节点的配置文件config.ini中的id决定的,如果id为2,则为nodeid2,配置文件中未指定id,则按顺序执行。
//启动SQL节点
sql节点和数据节点是同一台电脑上,所以新打开一个cmd界面
切到:
C:\ProgramFiles\mysqlcluster\sqlnode\mysql\bin
输入:
mysqld.exe--ndbcluster --ndb-connectstring=192.168.131.128 �Cconsole
启动完成之后,可以在管理节点查询连接情况:
切到
C:\mysql\bin
输入:
ndb_mgm
再输入:
show或者ALL STATUS
上图只是启动了192.168.131.129这台虚拟机的服务,只连了这个
最后还有一点需要特别注意:
注意建表语句后面一定要加上 engine=ndbcluster
在sql节点A的计算机上(192.168.131.129)的cmd中运行C:\Program
Files\mysqlcluster\sqlnode\mysql\bin\mysql.exe -u root-p命令登录mysql,
接下来需要输入密码时,密码默认为空(直接回车)。
创建数据库并插入数据:
―�C创建名为”MySQL_Cluster_Test”的数据库:
createdatabase MySQL_Cluster_Test;
―�C创建表”T_User”:
use MySQL_Cluster_Test;
createtable T_User(Name varchar(32),Age int) engine=ndbccluster
注意建表语句后面一定要加上 engine=ndbcluster
―�C插入数据:
insert into T_User values('DannyHoo',26);
―�C查询数据:
select * from T_User;
同样在sql节点B的计算机上(192.168.131.131)的cmd中运行C:\Program
Files\mysqlcluster\sqlnode\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节点重新启动时,会发现又重新连接到集群里了,而且每个数据节点的数据都是最新的。