Mysql实例win2003服务器下配置 MySQL 群集(Cluster)的方法

Mysql实例win2003服务器下配置 MySQL 群集(Cluster)的方法,第1张

概述介绍《Mysql实例win2003服务器下配置 MySQL 群集(Cluster)的方法》开发教程,希望对您有用。

《MysqL实例win2003服务器下配置 MysqL 群集(Cluster)的方法》要点:
本文介绍了MysqL实例win2003服务器下配置 MysqL 群集(Cluster)的方法,希望对您有用。如果有疑问,可以联系我们。

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-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 命令带参数 Cndbcluster 运行是一样的效果.
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 Cconfigdir=d:\MysqL-cluster

注:如果不带 Cconfigdir=d:\MysqL-cluster 参数,将默认为 C:\MysqL\MysqL-cluster 文件夹.

屏幕显示:

C:\>ndb_mgmd.exe -f d:\MysqL-cluster.conf\config.ini Cconfigdir=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窗口运行命令.

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

ndbd.exe Cinitial

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

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

3,启动sql节点

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

六、群集管理

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

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

《MysqL实例win2003服务器下配置 MysqL 群集(Cluster)的方法》是否对您有启发,欢迎查看更多与《MysqL实例win2003服务器下配置 MysqL 群集(Cluster)的方法》相关教程,学精学透。内存溢出PHP学院为您提供精彩教程。

总结

以上是内存溢出为你收集整理的Mysql实例win2003服务器下配置 MySQL 群集(Cluster)的方法全部内容,希望文章能够帮你解决Mysql实例win2003服务器下配置 MySQL 群集(Cluster)的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/sjk/1153830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存