文档章节

如何在Windows系统中配置Mysql群集(Mysql Cluster)

深圳大道
 深圳大道
发布于 2016/12/29 15:40
字数 2014
阅读 2
收藏 0

MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。

       Mysql群集(Cluster)简介

       MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的。MySQL群集中有三种节点:管理节点、数据节点和SQL节点。群集中的某计算机可能是某一种节点,也可能是两种或三种节点的集合。这三种节点只是在逻辑上的划分,所以它们不一定和物理计算机是一一对应的关系。

       管理节点(也可以称管理服务器)主要负责管理数据节点和SQL节点,还有群集配置文件和群集日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某个节点。其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入群集日志。

       数据节点用于存储数据。

       SQL节点跟一般的MySQL服务器是一样的,我们可以通过它进行SQL操作。

       下图中画出了三种群集节点及应用程序间的关系:


       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,再将安装包解压后的mysql\bin中的ndb_mgm.exe和ndb_mgmd.exe拷贝到C:\mysql\bin下。在目录C:\mysql\bin下新建cluster-logs目录、config.ini文件和my.ini文件。

       config.ini文件的内容如下:

       [ndbd default]
       # Options affecting ndbd processes on all data nodes:
       NoOfReplicas=2                      # Number of replicas
       DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data     # Directory for each data node's data files                             
                                                            
       DataMemory=80M    # Memory allocated to data storage 
       IndexMemory=18M   # Memory allocated to index storage                  
                                        # For DataMemory and IndexMemory, we have used the                   
                                        # default values.

       [ndb_mgmd]
       # Management process options:
       HostName=192.168.1.10                 # Hostname or IP address of management node
       DataDir=C:/mysql/bin/cluster-logs    # Directory for management node log files

       [ndbd]
       # Options for data node "A":                                
       # (one [ndbd] section per data node) 
       HostName=192.168.1.10          # Hostname or IP address

       [ndbd]
       # Options for data node "B":
       HostName=192.168.1.20          # Hostname or IP address

       [mysqld]
       # SQL node options: 
       HostName=192.168.1.10          # Hostname or IP address

       [mysqld]
       # SQL node options:
       HostName=192.168.1.20          # Hostname or IP address

       my.ini中的内容为:

       [mysql_cluster]
       # Options for management node process
       config-file=C:/mysql/bin/config.ini

       3.配置数据节点

       在IP为192.168.1.10的主机中新建文件夹C:\mysqlcluster\datanode\mysql,然后在此文件夹中继续新建子目录bin和cluster-data,bin下再建一个子目录也叫cluster-data。

       将安装包解压文件夹中mysql\bin中的ndbd.exe拷贝到C:\mysqlcluster\datanode\mysql\bin下,并在C:\mysqlcluster\datanode\mysql中新建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:\mysqlcluster\sqlnode\mysql下新建my.ini文件,文件内容为:

       [mysqld]
       # Options for mysqld process:
       ndbcluster                        # run NDB storage engine 
       ndb-connectstring=192.168.1.10   # location of management server

       之后也把C:\mysqlcluster\sqlnode文件夹整个拷贝到192.168.1.20主机的相同目录下。

       MySQL Cluster的启动

       三种节点服务启动时,一定要按照先启动管理节点,后启动数据节点,再启动SQL节点的顺序进行。

       1.启动管理节点

       在192.168.1.10主机中打开命令行窗口,切到C:\mysql\bin目录,输入:

       ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster

       回车,管理节点服务就启动了,命令行上可能没有任何提示信息,可以打开C:\mysql\bin\cluster-logs\ndb_1_cluster.log日志文件查看启动信息。注意,此命令行窗口不能关闭,除非你想停止服务。

       注:我们也可以将其做成服务,在命令行中输入:

       ndb_mgmd --install=ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster

       2.启动数据节点

       在192.168.1.10主机中打开一个新的命令行窗口,切到目录C:\mysqlcluster\datanode\mysql\bin,输入:

       ndbd

       回车,数据节点就启动了。

       注:我们也可以将其做成服务,在命令行中输入:

       ndbd --install=ndbd

       以相同的方法在192.168.1.20中启动数据节点服务。

       如何查看是否启动成功呢?我们可以在192.168.1.10主机中再新开一个命令行窗口,切到目录C:\mysql\bin,输入:

       ndb_mgm

       回车,然后再输入:

       ALL STATUS

       回车,就可以看到数据节点的连接信息了。

       3.启动SQL节点

       在192.168.1.10主机中继续打开一个新的命令行窗口,切到目录C:\mysqlcluster\sqlnode\mysql\bin,输入:

       mysqld --console

       回车,SQL节点启动。

       注:我们也可以将其做成服务,输入:

       mysqld -install mysql

       以相同的方法在192.168.1.20中启动SQL节点。

       想要查看SQL节点的启动情况可以在192.168.1.10主机中同样打开新命令行,输入:

       ndb_mgm

       回车,再输入:

       SHOW

       回车,就可以看到SQL节点的连接情况了。

       测试MySQL Cluster

       我们需要测试三种情况:

       1.在任一SQL节点对数据节点进行操作后,各数据节点是否能够实现数据同步。例如,我们在192.168.1.10主机上新创建一个数据库myDB,然后再建一个表student(新建表如下命令:create table student (id int(2)) engine=ndbcluster),插入若干数据,接着我们到192.168.1.20主机上查看是否能看到新的数据库myDB和新的表student以及插入数据。

       2.当关闭任一数据节点后,在所有SQL节点中进行操作是否不受其影响。例如,我们关闭192.168.1.10主机上的数据节点服务,在两台主机上应该能够继续对数据库进行各种操作。

       3.关闭某数据节点进行了数据库操作,然后重新启动,所有SQL节点的操作是否正常。

       这里要说明的是,通过SQL节点创建新的数据库时,必须在create语句中使用“engine=ndbcluster”选择ndbcluster数据库引擎,否则创建的数据库不会加到MySQL群集系统中,只能作为普通的数据库独立使用。

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/38900613

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
加载中

评论(1)

w
wuwq
为什么我在启动sql节点,执行mysqld --console时一直失败0.0
mysql 采用官方yum源的安装方法

以下内容是mysql官方的翻译。 使用MySQL Yum存储库的快速指南 抽象 MySQL Yum存储库提供用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM软件包。这些软件包还可以升级和替换从Lin...

lisq6151
2017/08/29
0
0
Mysql Cluster集群配置详解

一. MySQL集群简介 MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。 MySQL群集需要有...

黎晨
2018/06/06
0
0
MariaDB Galera Cluster部署实践

官方文档: 一、 Galera Cluster的工作原理 主要关注点是数据一致性。 事务既可以应用于每个节点,也可以不全部应用。 所以,只要它们配置正确,数据库保持同步。 Galera复制插件不同于传统的...

IT技术栈
2018/04/24
0
0
如何讓 mysql cluster 的 多台ndb節點,網路恢復後,同時重啟

如何讓 mysql cluster 的 多台ndb節點,網路恢復後,同時重啟? 目前有遇到個問題,就是mysql cluster 群集,網路斷線後,會使的整個群集,停止. 必須要去每台ndb節點,重新啟動,才會正常. 這樣如果有...

飛宇
2010/06/08
1K
7
MySQL高可用方案:基于MHA实现的自动故障转移群集

MySQL高可用方案:基于MHA实现的自动故障转移群集 能实现自动数据库故障转移的方案只有MySQL Cluster和 DRBD+Heartbeat,这也是两种不依赖Replication的HA方案。 但是,MySQL Cluster(NDB)...

chirnson
2014/06/05
527
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 自定义登录认证(二)

一、前言 本篇文章将讲述Spring Security自定义登录认证校验用户名、密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Security...

郑清
31分钟前
3
0
php yield关键字以及协程的实现

php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承...

冻结not
44分钟前
4
0
servlet请求和响应的过程

本文转载于:专业的前端网站➥servlet请求和响应的过程 1.加载 Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一...

前端老手
44分钟前
4
0
golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err ...

guonaihong
48分钟前
28
0
喜玛拉雅已听书单

时间倒序排 书名 作者 状态 唐砖 孑与2 进行中 死灵之书(克苏鲁神话合集) 阿卜杜拉·阿尔哈萨德 进行中 赡养人类 刘慈欣 完结 赡养上帝 刘慈欣 完结 中国太阳 刘慈欣 完结 中国太阳 刘慈欣...

Alex_Java
49分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部