Windows Server 2003 下配置 MySQL 集群(Cluster)教程

   这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是讲解了原理知识,然后给出详细配置步骤和操作方法,需要的朋友可以参考下

  MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器。在 MySQL 5.0 及以上的二进制版本中,以及与最新的 Linux 版本兼容的 RPM 包中提供了该存储引擎。

  MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB 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-win32bin 加到 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-win32my.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.confconfig.ini –configdir=d:mysql-cluster

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

  屏幕显示:

   代码如下:

  C:>ndb_mgmd.exe -f d:mysql-cluster.confconfig.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.confconfig.ini'

  2010-06-10 01:16:57 [MgmtSrvr] INFO — Got initial configuration from ‘d:mysql-cluster.confconfig.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窗口运行命令。

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

  代码如下:

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

时间: 2024-09-10 04:20:26

Windows Server 2003 下配置 MySQL 集群(Cluster)教程的相关文章

Windows Server 2003 下配置 MySQL 集群(Cluster)教程_Mysql

MySQL 群集是 MySQL 适合于分布式计算环境的高可用.高冗余版本.它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器.在 MySQL 5.0 及以上的二进制版本中,以及与最新的 Linux 版本兼容的 RPM 包中提供了该存储引擎. MySQL 群集是一种技术,该技术允许在无共享的系统中部署"内存中"和"磁盘中"数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于

Windows Server 2003下修改MySQL 5.5数据库data目录_Mysql

说明: 操作系统:Windows Server 2003 MySQL版本:5.5.25 MySQL程序安装目录:D:\Program Files\MySQL\MySQL Server 5.5\ MySQL数据库目录:C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data 需求:修改MySQL数据库目录为D:\Program Files\MySQL\MySQL Server 5.5\data

在ubuntu9.0上配置MySQL集群详细教程

家在网上都能找到都是RedHat系统等等,对Ubuntu系统MySQL集群就没有介绍文章,我现在写写Ubuntu这个MySQL集群方法.新手不要骂我,呵呵. 介绍网络环境: 测试环境: Server1: ndbd 192.168.245.11 Server2: ndbd 192.168.245.12 Server3: mysqld –ndb-cluster 192.168.245.13 ndbd: 数据库节点. mysqld –ndb-cluster: MySQL服务器节点,程序直接访问的是这台

Windows Server 2012 Hyper-V故障转移集群虚拟机亲和性策略详解

今天收到一个邮件咨询如何在Windows Server 2012实现虚拟机亲和性策略, 熟悉VMware vSphere解决方案的技术宅肯定会比较熟悉一个叫做DRS的动态迁移策略, 其中可以配置VM亲和性策略控制两个虚拟机应用运行在不同的物理ESXi主机上.这个功能还是很实用的,例如如果虚拟机应用运行了一个Guest集群,那么其中一个基本需求就是让来宾虚拟机运行在不同的物理主机上,如果DRS控制策略处于性能考虑让两个来宾虚拟机运行在同一台物理主机上则集群的高可用性就失去了:另一个常见的案例是在站

Windows Server 2003开机自动启动MySQL服务设置方法

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   每次开机我都要去点击mysqld-nt.exe执行文件才启动mysql,虽然将创建了mysqld-nt.exe快捷方式到桌面,但还是想它能自动启动,怎么可以象mssql那样设置开机跟着启动? 下面为笔者总结的一些经验与大家分享: 1.打开命令行窗口(CMD) 2.切换到mysql目录下,例如:d:\xampp\mysql\bin 3.输入mysqld-nt  

如何通过使用Windows Server 2003来配置NAT服务器

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   本文介绍了如何通过使用Windows Server 2003来配置网络地址转换(NAT)服务器.Windows Server 2003"路由和远程访问"服务包括NAT路由协议.如果将NAT路由协议安装和配置在运行"路 由和远程访问"的服务器上,则使用专用Internet协议(IP)地址的内部网络客户端可以通过NAT服务器的

Windows Server 2003 高级配置

Windows Server 2003 高级配置 域.一台电脑批量管理多台电脑的一种技术. 域树.多个树按照一定的层次排列,形成倒置的树状结构. 域林.若干棵域树形成一个域林. 站点.是网络的物理分组.一个站点可以包含多个域:一个域也可以包含多个站点. 信任关系. 有了信任关系,一个域中的用户可以访问其他域的资源.有四种信任类型. 外部信任. 领域信任.跨操作系统的信任. 林信任.只能在两个Win Server 2003的林根域间建立.林信任只能在两个林之间创建,关系不能传递. 快捷信任.

Linux下搭建MySQL集群

一.MySQL集群简介 1.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败). 无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见.传播更新使用一种复杂的通信机制,这一机

Windows Server 2003系统安全技巧集

操作系统的安全性无疑受大家关注最多,虽然Windows 2003稳定的性能受到越来越多用户的青睐,但面对层出不穷的新病毒,加强安全性依旧是当务之急.通常,我们只需要某些细微的改动就能使系统安全提升一个台阶,大家看看下面几点您做到了么? ● 用户口令设置 为管理员帐户设置一个密码,在很大程度上可以避免口令攻击.密码设置的字符长度应当在8位以上,最好是字母.数字.特殊字符的组合,如"psp53,@pq"."skdfksadf10@"等,可以有效地防止暴力破解.最好不要用