MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的 Cluster ,管理服务器,以及(可能存在的)专门的数据访问程序。

管理服务器(MGM节点)负责管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每个节点从管理服务器检索配置数据。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster 日志。

目前能够运行 MySQL Cluster 的操作系统有 Linux、Mac OS X 和 Solaris,最新的版本已经支持 Windows 操作系统。

MySQL 群集的数据节点之间的通信是不加密的,并且需要高速的带宽,所以建议把群集建立在一个高速局域网内,不建议跨网段、跨公网的部署这种系统体系。

MySQL 群集分为三种节点:管理节点,数据节点和SQL节点。

管理节点:主要用于管理各个节点,能够通过命令对某个节点进行重启、关闭、启动等操作。也能够监视全部节点的工作状态。

数据节点:主要是对数据的存储,不提供其他的服务。

SQL节点:主要是对外提供SQL功能,类似一台普通的 MySQL Server。

而SQL节点和数据节点可以是同一台机器,也就是说这台机器即是SQL节点也是数据节点。它们只是逻辑关系上的划分,实际部署时,甚至所有的阶段都可以位于同一台物理机器上,只是配置较复杂些。

一、软件下载机器操作环境

配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的区别。本文以 Windows 平台下的 MySQL 群集版本 MySQL Cluster 7.1.3 为例(截至2010年6月初的最高版本),这是 MySQL Server 5.1 系列版本之一,添加了群集的功能。下载地址为:http://dev.mysql.com/downloads/cluster,选择 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件,这是一个 for Windows 32位版本的、免安装的二进制版本。

根据自己的操作系统的位数,也可以选择 64 位版本的。还有一个 27.2M 的 Windows(x86, 32-bit) 版本,下载下来需要自己编译,有经验的高级用户可以选用。

本实验在 2 台安装 Windows Server 2003(sp2) 的机器上进行。节点分配及 IP 配置如下:

第一台机器,IP 为 10.0.0.201,作为管理节点(MGM),SQL节点1(SQL1),数据节点1(NDBD1)。

第二台机器,IP 为 10.0.0.202,作为SQL节点2(SQL2),数据节点2(NDBD2)。

管理节点最好不要与数据节点部署在同一台服务器上,否则可能会因为该数据节点服务器的当机,而导致管理节点服务器的问题,从而导致整个群集系统的崩溃。

二,配置管理节点:

在第一台机器上,建文件夹 D:\mysql-cluster,在其下建立文件 config.ini,内容如下:

[NDBD DEFAULT]

NoOfReplicas=1

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

# Managment Server

[NDB_MGMD]

hostname=10.0.0.201

# Storage Engines

[NDBD]

hostname=10.0.0.201

datadir= D:\data

[NDBD]

hostname=10.0.0.202

datadir= D:\data

# SQL Engines

[MYSQLD]

hostname=10.0.0.201

[MYSQLD]

hostname=10.0.0.202

Cluster 管理节点的默认端口是1186,数据节点的默认端口是 2202。从 MySQL 5.0.3开始,该限制已被放宽,Cluster 能够根据空闲的端口自动地为数据节点分配端口。如果你的版本低于5.0.22,请注意这个细节。

Cluster 管理节点作为一个服务端(通过运行 db_mgmd.exe 程序读取本配置文件来启动),通过本机上的客户端 ndb_mgm.exe 来连接和操作。

三、配置 MySQL 数据库服务器:

在2台机器上,分别依次操作。

解压 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件到 D:\mysql-cluster-gpl-noinstall-7.1.3-win32 文件夹下,把 D:\mysql-cluster-gpl-noinstall-7.1.3-win32\bin 加到 Windows 的系统 path 中。

打开DOS命令行窗口(配置完系统path后,在再次打开新的命令行窗口),执行以下语句,让 MySQL 作为 Windows 服务运行:

mysqld.exe -install mysql

再在 Windows 服务管理界面里,配置 mysql 服务,手动启动(不要自动启动)。

把 D:\mysql-cluster-gpl-noinstall-7.1.3-win32 下的某个备用的配置文件(例如my-small.ini)复制为 my.ini 文件。

建立 D:\tmp 文件夹。

四、配置SQL节点和数据节点:

在2台机器上,分别依次操作。

建立文件夹 D:\data。

编辑 NySQL 配置文件 D:\mysql-cluster-gpl-noinstall-7.1.3-win32\my.ini,在 [mysqld] 节末尾加语句:

#SQL群集节点

ndbcluster

ndb-connectstring=10.0.0.201

有了 ndbcluster 语句,mysql 服务将作为群集的 SQL 节点启动。mysqld.exe 命令带参数 –ndbcluster 运行是一样的效果。

mysql 服务连接到数据节点的 2202 默认端口,或自动分配的别的可用端口。

(问题:SQL节点如何获得数据节点的IP地址?是否通过连接管理节点,取得所有数据节点的IP地址的列表?)

这里的连接字符串的值在 MySQL 服务启动时使用,用于连接到管理节点。

在末尾加语句:

#NDB集群节点

[mysql_cluster]

ndb-connectstring=10.0.0.201

注:好像以下形式也可:

[ndbd]

ndb-connectstring=10.0.0.201

这里的连接字符串的值在数据节点启动时使用,用于连接到管理节点。

五,启动群集各服务器

启动顺序依次是:管理节点、数据节点、SQL节点。

1,启动管理节点

在第一台服务器的DOS窗口,运行命令:

C:\>ndb_mgmd.exe -f d:\mysql-cluster.conf\config.ini –configdir=d:\mysql-cluster

注:如果不带 –configdir=d:\mysql-cluster 参数,将默认为 C:\mysql\mysql-cluster 文件夹。

屏幕显示:

C:\>ndb_mgmd.exe -f d:\mysql-cluster.conf\config.ini –configdir=d:\mysql-cluster

2010-06-10 01:16:57 [MgmtSrvr] INFO — NDB Cluster Management Server. mysql-5.1.44 ndb-7.1.3

2010-06-10 01:16:57 [MgmtSrvr] INFO — Reading cluster configuration from ‘d:\mysql-cluster.conf\config.ini'

2010-06-10 01:16:57 [MgmtSrvr] INFO — Got initial configuration from ‘d:\mysql-cluster.conf\config.ini', will try to set it when all ndb_mgmd(s) started

2010-06-10 01:16:57 [MgmtSrvr] INFO — Mgmt server state: nodeid 1 reserved for ip 10.0.0.201, m_reserved_nodes 1.

2010-06-10 01:16:57 [MgmtSrvr] INFO — Id: 1, Command port: *:1186

==INITIAL==

2010-06-10 01:16:57 [MgmtSrvr] INFO — Starting initial configuration change

2010-06-10 01:16:57 [MgmtSrvr] INFO — Configuration 1 commited

2010-06-10 01:16:57 [MgmtSrvr] INFO — Config change completed! New generation: 1

==CONFIRMED==

2,启动数据节点

分别在2台服务器的DOS窗口运行命令,win2003服务器下配置 MySQL 群集(Cluster)的方法》(https://www.unjs.com)。

第一次,或初始化群集节点时,运行命令:

ndbd.exe –initial

初始化之后,只运行 ndbd.exe 即可。若带参数 –initial 运行,将使正常运行的群集系统中,数据节点的数据全部丢失。

数据节点依赖管理节点服务器,进行数据的自动复制和同步,使各个数据节点的数据保持一致,并在某个数据节点意外关闭又恢复后,进行数据的恢复重建。

3,启动SQL节点

有了 ndbcluster 语句,启动 mysql 服务,就启动了SQL节点。应在前2种节点启动后,分别在2台服务器上进行。

六、群集管理

在所有的数据节点和SQL节点未启动之前,运行群集管理节点服务的客户端 ndb_mgm.exe,只能获得以下信息:

C:\>ndb_mgm.exe

— NDB Cluster — Management Client –

ndb_mgm> show

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=2 (not connected, accepting connect from 10.0.0.201)

id=3 (not connected, accepting connect from 10.0.0.202)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)

id=4 (not connected, accepting connect from 10.0.0.201)

id=5 (not connected, accepting connect from 10.0.0.202)

ndb_mgm>

说明数据节点、SQL节点均未连接到管理节点服务。

在所有的数据节点和SQL节点正确启动之后,将获得以下信息:

ndb_mgm> show

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=2 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)

id=3 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)

id=4 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

id=5 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3)

ndb_mgm>

关闭群集的DOS命令:

ndb_mgm -e shutdown

或在 ndb_mgm 环境下执行 shutdown 命令。

以上命令或关闭管理节点服务和所有的数据节点。随意、强行关闭群集系统(关机或关闭进程),会导致数据没有全部写回磁盘而导致的数据丢失。

关闭SQL节点的 mysqld 服务:

C:\>net stop mysql,或:

C:\>mysqladmin -u root shutdown

七、测试

正常运行的 MySQL 群集系统,通过SQL节点可以对数据节点进行数据库操作,各数据节点可以自动进行数据同步。某一个数据节点关闭后,不影响SQL节点的使用。某些数据节点出错后,可以进行恢复。需要注意的是,SQL节点建立数据库时,必须选择“ndbcluster”数据库引擎。如果不选择“ndbcluster”引擎,建立的数据库将不会进入MySQL群集系统中,但是可以独立使用。

另外,每个 NDB 表必须有一个主键。如果在创建表时未定义主键,NDB Cluster 存储引擎将自动生成隐含的主键。该隐含的键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见。

测试实例:

在某台 SQL 节点上登录 mysql,建表 city,并插入数据:

C:\>mysql -u root test

mysql>create table city (nId mediumint unsigned not null auto_increment primary key, sName varchar(20) not null)

engine = ndbcluster default charset utf8;

mysql>insert city values(1, ‘city-1′);

mysql>insert city values(1, ‘city-2′);

在另一台 SQL 节点上登录 mysql,从表 city 里得到记录:

C:\>mysql -u root test

mysql>select * from city;

在群集系统正常工作的情况下,应当能取到先前插入的所有记录。

另外的测试(单点故障测试):

1,还可以人为停止某一个数据节点(Ctrl+C中断DOS命令ndbd.exe,停止该服务),看看所有的 SQL 节点是不是能正常工作。

2,在某一个数据节点停止后,进行数据库操作。然后重新开启该数据节点,看看群集中的所有的 SQL 节点能不能得到完整的数据。

八、常见问题与扩展

配置和管理 MySQL 群集系统并不是一件简单的事情。由于不合理的配置导致的系统问题非常常见,比如网络故障、内存限制等,会导致仲裁体统强制关闭数据节点。

如果机器上原来已经安装过 MySQL Server,则一定要卸载干净原来的数据库系统。注意群集系统中的 mysql.exe 程序与非群集系统的管理 Client 是不同的。

还可以与负载均衡系统结合,以提供更强的可用性和数据存取效率。

可能由于未知的Bug或别的原因,导致群集系统出现一些意外故障。所以建议选取版本时,选择已经得到大多数人认可的版本,不一定选取最新的版本,最新的版本往往不太稳定。当然也不要选用太陈旧的功能有限制的版本。

QQ空间 搜狐微博 人人网 开心网 百度搜藏更多

Tags:MySQL 群集

复制链接收藏本文打印本文关闭本文返回首页

上一篇:MySQL查询in操作 查询结果按in集合顺序显示

下一篇:21分钟 MySQL 入门教程

相关文章

2013-01-01MySQL性能优化的一些技巧帮助你的数据库

2013-06-06关于mysql基础知识的介绍

2009-07-07MySQL 在触发器里中断记录的插入或更新?

2013-09-09如何恢复Mysql数据库的详细介绍

2011-07-07Mysql 建库建表技巧分享

2014-05-05mysql锁定单个表的方法

2007-03-03在MySQL中用正则表达式替换数据库中的内容的方法

2010-06-06mysql删除重复记录语句的方法

2013-07-07总结MySQL建表、查询优化的一些实用小技巧

2012-04-04mysql服务器查询慢原因分析与解决方法小结

文章评论

最 近 更 新

MySQL中select语句介绍及使用示例

mysql实现事务的提交和回滚实例

linux忘记mysql密码处理方法

基于mysql多实例安装的深入解析

mysql手动删除BINLOG的方法

MySQL索引的缺点以及MySQL索引在实际操作

mysql常用函数汇总(分享)

mysql导入sql文件命令和mysql远程登陆使用

Mysql自带profiling性能分析工具使用分享

MySQL SQL 语法参考

热 点 排 行

mysql安装图解 mysql图文安装教程

超详细mysql left join,right jo

Can''t connect to MySQL server

Mysql命令行导入sql数据

MYSQL 数据库导入导出命令

Mysql字符串截取函数SUBSTRING的

MySQL数据库备份与恢复方法

MySQL server has gone away 问题

windows下mysql忘记root密码的解

MySQL日期数据类型、时间类型使用

win2008 mysql 群集_win2003服务器下配置 MySQL 群集(Cluster)的方法 -电脑资料相关推荐

  1. bind dns mysql,linux下bind9.8+dlz+mysql 的dns服务器局域网配置

    linux下bind9.8+dlz+mysql 的dns服务器局域网配置 安装1.mysql 我用的二进制包安装 groupadd mysql useradd -r -g mysql -s /sbin ...

  2. mysql服务器默认使用用户_在Windows下配置MySql服务器默认使用的用户是

    在Windows下配置MySql服务器默认使用的用户是 答:root 制单的基本要求是 答:完整 及时 简明 正确 为了妥善解决各类旅游企业受损严重,普遍面临的现金流不足.应收账款风险.大量游客投诉和 ...

  3. Window环境下配置MySQL 5.6的主从复制、备份恢复

    Window环境下配置MySQL 5.6的主从复制.备份恢复 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 ...

  4. LINUX 下 配置MySQL数据库集群

    LINUX 下 配置MySQL数据库集群 MySQL数据库集群进行正确配置步骤(1) 此文章主要向大家讲述的是对MySQL数据库集群进行正确配置的实际操作步骤,以及对其概念的讲述,如果你对其相关的实际 ...

  5. mysql的sererdata_MySQL_win2008 R2服务器下修改MySQL 5.5数据库data目录的方法,说明: 操作系统:Windows Server - phpStudy...

    win2008 R2服务器下修改MySQL 5.5数据库data目录的方法 说明: 操作系统:Windows Server 2008 R2 MySQL版本:5.5.25a MySQL程序安装目录:D: ...

  6. window mysql 同步复制_Window环境下配置MySQL 5.6的主从复制、备份恢复

    Window环境下配置MySQL 5.6的主从复制.备份恢复 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 ...

  7. CentOS 和Windows 下配置MySQL远程访问

    一.前言 由于实验在云服务器上跑的结果不是很理想.所以,现在切换到局域网服务器.因此,需要重新配置 Windows 服务器和 CentOS 服务器下的MySQL环境. 为了方便在本地Navicat 上 ...

  8. linux下配置mysql默认编码utf8

    linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8[mysqld] character-set-serv ...

  9. Linux下配置mysql密码

    Linux下配置mysql密码 Linux下配置mysql密码有两种情况: 一.首次登录mysql未设置密码或忘记密码解决方法: 二.已经配置密码对原有密码进行更改. 一.首次登录mysql未设置密码 ...

  10. 在tomcat下配置mysql的数据库连接池及Servlet

    这几天在tomcat下配置mysql的数据库连接池,再使用servlet进行数据访问.碰到不少问题,百度查了不少资料,不是很完整,试了很久,总算调通了.记录下来,供大家参考. Tomcat和MySQL ...

最新文章

  1. 在线等!同事扔需求,不会写代码躲在厕所怎么办 | 每日趣闻
  2. cs怎么加电脑人_怎么给电脑文件夹加密码?
  3. SpringBoot 处理内置对象
  4. NLP︱高级词向量表达(三)——WordRank(简述)
  5. ceph luminous 版本 osd掉线处置
  6. 想用数据库“读写分离”,请先明白“读写分离”解决什么问题
  7. 分布式系统负载均衡策略分析与研究
  8. python模拟太阳系_模拟太阳系8大行星运行图:matplotlib实现
  9. oracle中的或者是什么,oracle中=是什么意思呢?
  10. Linux 下安装 Wordpress教程
  11. python爬取招聘网信息并保存为csv文件
  12. 密码管理器(PM)安全机制和问题研究
  13. 中科院信工所考研经验整理(待更新)
  14. 前端学习周报(第一周)
  15. AngularJS进阶(四十)创建模块、服务
  16. Oracle 系列(oracle分区)
  17. 嵌入式计算机是专用计算机吗,什么是嵌入式计算机?
  18. windows和android平板,AndroidWindows平板一样适用_苹果平板电脑_平板电脑评测-中关村在线...
  19. SQLServer日期函数的使用
  20. 企业信息化系统建设方案

热门文章

  1. 通过IMAP方式迁移U-Mail邮件到Exchange 2013之2008R2 AD搭建!
  2. 交换机常用命令及console口配置
  3. 深入学习卷积神经网络(CNN)的原理知识
  4. 微分中值定理——(罗尔定理、拉格朗日定理、导数极限定理、达布定理、柯西定理)
  5. Tryhackme-Web Hacking Fundamentals
  6. python3爆破服务器_Python 3.5 之爆破二级域名.
  7. fastboot使用
  8. JAVA API (application programming interface)
  9. 基于ENVI下的土地利用信息提取(一)
  10. 测量网页元素的大小和间距的利器