首页 > 代码库 > 在windows环境下搭建mysql集群

在windows环境下搭建mysql集群

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;
<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    在windows环境下搭建mysql集群