1. 前(fei)言(hua)
最近实训老师给我们布置了一个建立mysql集群的任务,并扔了两个博客链接给我们参考,然后就没有然后了。根据老师给的博客上面的步骤试了一下,发现并不能成功建立,于是自己百度,找到了一个挺靠谱的博客,于是参考了一下,感觉总体还是不错的~
靠谱的博客:
http://blog.csdn.net/mazhaojuan/article/details/42211857
2. 理论基础知识
首先需要了解什么是管理节点、数据节点和SQL节点~
(1)管理结点:从名字可以看出来,这种结点的作用就是管理其他结点的,这个节点可以查看其他数据节点和SQL节点的连接状态,并可以控制这些的节点重启。
(2)数据节点:这些节点的作用就是存放数据,每个数据节点都有这个mysql集群的全部数据(数据冗余),也就是只要存在一个能运行就可以了~
(3)SQL节点:这些节点向外提供SQL接口,所有数据库操作都发往这里,也是只要存在一个能运行就可以~
(ps:本文侧重实际操作,理论基础知识请自行百度学习~)
3. 实际操作过程(博主的操作系统是WIN10~)
以下使用5台电脑来实现mysql集群(1个管理节点,2个数据节点,2个SQL节点)
管理节点的IP:192.168.1.66
数据节点1的IP:192.168.1.50
数据节点2的IP:192.168.1.53
SQL节点1的IP:192.168.1.63
SQL节点2的IP:192.168.1.56
(1)到mysql官网下载一个解压版的mysql cluster,下载地址在下面~
根据自己的操作系统选择
下载完成后解压
(2)配置管理节点
在管理节点的C盘新建一个mysql文件夹,然后在mysql文件夹下新建一个bin文件夹和mysql-cluster文件夹。在刚刚解压出来的文件夹中的bin文件夹下找到ndb_mgm.exe和ndb_mgmd.exe,然后复制到刚刚新建的bin文件夹下,并在此文件夹下新cluster-logs文件夹、config.ini文件和my.ini文件。
编辑config.ini文件:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
# Number of replicas 数据节点数
NoOfReplicas=2
DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data
# Directory for each data node‘s data files
# 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 管理节点 IP
HostName=192.168.1.66
# Directory for management node log files 管理节点日志存放路径
DataDir=C:/mysql/bin/cluster-logs
[ndbd]
# Options for data node "1":
# (one [ndbd] section per data node)
# Hostname or IP address 数据节点1 IP
HostName=192.168.1.50
[ndbd]
# Options for data node "2":
# Hostname or IP address 数据节点2 IP
HostName=192.168.1.53
[mysqld]
# SQL node options:
# Hostname or IP address sql节点1 IP
HostName=192.168.1.63
[mysqld]
# SQL node options:
# Hostname or IP address sql节点2 IP
HostName=192.168.1.56
编辑my.ini文件:
[mysql_cluster]
# Options for management node process config.ini存放路径
config-file=C:/mysql/bin/config.ini
(2)配置数据节点:
在数据节点1新建C:\mysqlcluster\datanode\mysql文件夹,在这个mysql文件夹中新建一个bin文件夹和cluster-data文件夹,在这个新建bin文件夹中新建一个也叫cluster-data的文件夹。接下来将解压的文件夹中data目录下所有文件复制到C:\mysqlcluster\datanode\mysql\cluster-data,再到解压文件夹中的bin目录下复制一个ndbd.exe到C:\mysqlcluster\datanode\mysql\bin,最后再新建一个my.ini文件。
编辑my.ini:
[mysql_cluster]
# Options for data node process:
# location of management server 管理节点IP
ndb-connectstring=192.168.1.66
由于数据节点2的配置与这个一毛一样,你可以选择再弄一次加深印象,也可以在数据节点2先新建C:\mysqlcluster\datanode,然后偷懒把这个数据节点1的C:\mysqlcluster\datanode下的mysql文件夹整个复制到数据节点2的C:\mysqlcluster\datanode目录下。
(3)配置SQL节点
在SQL节点1新建C:\mysqlcluster\sqlnode\mysql文件夹,将安装包文件解压到mysql目录下,然后在C:\mysqlcluster\sqlnode\mysql下新建my.ini文件
编辑my.ini:
[mysqld]
# Options for mysqld process:
# run NDB storage engine
ndbcluster
# location of management server 管理节点IP
ndb-connectstring=192.168.1.66
记得要把my-default.ini 文件删除或更名为其他名字
SQL节点2的配置和SQL节点1一毛一样,自己看着办~
(4)打开mysql cluster
A、先打开SQL节点的服务:(dos命令行)
如果没有安装MySQL服务,则到SQL节点进入C:\mysqlcluster\sqlnode\mysql\bin目录下,使用mysqld –install安装MySQL服务,使用net start mysql命令启动MySQL服务
如果已经安装了MySQL服务,则直接使用net start mysql命令启动MySQL服务
SQL节点2也做相同操作
B、为root用户分配远程连接的相关权限
到管理节点进入C:\mysqlcluster\sqlnode\mysql\bin目录下,使用mysql -uroot -p,然后输入密码(默认为空)
然后输入
GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘ WITH GRANT OPTION;
C、启动管理节点
到管理节点打开命令行窗口,切到C:\mysql\bin目录,输入
ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster
这个窗口不能关掉,否则服务不可用。
打开
D、启动数据节点
到数据节点1打开命令行窗口,切到C:\mysqlcluster\datanode\mysql\bin,输入 ndbd
数据节点1:
数据节点2操作相同:
E、启动SQL节点
到SQL节点1打开命令行窗口,切到C:\mysqlcluster\sqlnode\mysql\bin,输入:
mysqld –console
SQL节点1
SQL节点1启动完成:
SQL节点2操作相同
4. 测试
到任意一个SQL节点创建数据库,在新建的数据库里面新建一张表
create database db;
use db;
create table t (id int) engine=ndbcluster;
到另一个SQL节点查询看看能否看到新建的数据库db和表t,如果有那就没问题了~
show databases;
use db;
show tables;