windows XP下MySQL Cluster集群安装配置


安装过程

1软件的下载

下载MySQL Cluster,地址:http://www.mysql.com/downloads/cluster/

Windows32位免安装版的,如图:


2机子的配置及作用

准备3台电脑,机子的功能和配置见下表

Node

IP Address

Management (MGMD) node

192.168.1.102

MySQL server (SQL) node “A”

192.168.1.103

MySQL server (SQL) node “B”

192.168.1.108

Data (NDBD) node "A"

192.168.1.103

Data (NDBD) node "B"

192.168.1.108

我们可以看到192.168.1.103机器可以分别作为SQL nodeData node同时使用。192.168.1.108的配置也是如此。如果安装的IP有变,则在下列安装过程中出现的ini文件里写的IP地址也要相应的改正。

3.软件的安装

3.1解压下载的安装包,为了方便,把文件夹的名字改为mysql

3.2 Managementnode的安装配置。

       Managementnode一定要安装在C盘下,并且是以下的目录(这是在运行此节点时报错,说找不到相对应的目录)。在IP192.168.1.102的机子上生成c:/mysql/binC:/mysql/mysql-cluster(第一次启动后在这个文件夹会生成类似ndb_1_config.bin.1的文件,好像是为了以后启动加载的配置)c:/mysql/bin/cluster-logs目录,在下载解压的文件目录mysql/binndb_mgmd.exendb_mgm.exe复制到192.168.1.102c:/mysql/bin目录下。在192.168.1.102c:/mysql/bin下生成两个文件,my.iniconfig.inimy.ini的内容为:

[mysql_cluster]

# Options formanagement node process

config-file=C:/mysql/bin/config.ini

config.ini的内容:

[ndbd default]

# Optionsaffecting ndbd processes on all data nodes:

NoOfReplicas=2                     # Number of replicas

DataDir=D:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data   # Directory foreach data node's data files

                                   #Forward slashes used in directory path,

                                    #rather than backslashes. This is correct;

                                   # seeImportant note in text

DataMemory=80M   # Memory allocated to data storage

IndexMemory=18M  # Memory allocated to index storage

                 # For DataMemory and IndexMemory, we have used the

                 # default values. Since the "world" database takes up

                 # only about 500KB, this should be more than enough for

                 # this example Cluster setup.

[ndb_mgmd]

# Managementprocess options:

HostName=192.168.1.102              # Hostname or IP address of management node

DataDir=C:/mysql/bin/cluster-logs  # Directory for management node log files

[ndbd]

# Options fordata node "A":

                               # (one [ndbd] section per data node)

HostName=192.168.1.103          # Hostname or IP address

[ndbd]

# Options fordata node "B":

HostName=192.168.1.108          # Hostname or IP address

[mysqld]

# SQL nodeoptions:

HostName=192.168.1.103          # Hostname or IP address

[mysqld]

# SQL nodeoptions:

HostName=192.168.1.108          # Hostname or IP address

 

 

3.3 Data nodes的安装配置

IP192.168.1.103的机子上生成D:/Program Files/mysqlcluster/datanode/mysql/binD:/Program Files/mysqlcluster/datanode/mysql/cluster-dataD:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data.在下载的的解压文件夹mysql/bin中将ndbd.exe复制到192.168.1.103机子的D:/Program Files/mysqlcluster/datanode/mysql/bin目录下,并在D:/Program Files/mysqlcluster/datanode/mysql/bin目录下生成my.ini文件,文件的内容为:

[mysql_cluster]

# Options fordata node process:

ndb-connectstring=192.168.1.102 # location of management server

弄好后直接将192.168.1.103机子下的D:/ProgramFiles/mysqlcluster/datanode整个文件夹复制到192.168.1.108机子的同样路径下(或者按照上面的方法一步一步为192.168.1.108机子生成相应的目录和文件,但是由于Data nodes的安装配置都是一样的,所以直接复制即可)

3.4 SQL node的安装配置

IP192.168.1.103的机子上生成D:/Program Files/mysqlcluster/sqlnode目录,将下载的解压文件夹mysql直接整个复制到D:/Program Files/mysqlcluster/sqlnode目录下,在D:/Program Files/mysqlcluster/sqlnode/mysql下生成my.ini文件,文件内容为:

[mysqld]

# Options formysqld process:

ndbcluster                     # run NDB storage engine

ndb-connectstring=192.168.1.102 # location of management server

【my.ini的建立,可以参考另外一篇文章:http://www.cnblogs.com/xiaoTT/archive/2011/12/22/2297397.html

即:

《【原创】Windows下构建Mysql Cluster集群数据库.docx

同理,将D:/Program Files/mysqlcluster/sqlnode整个文件夹复制到192.168.1.108机子的相同目录下

 

4启动MySQL Cluster

启动各个节点是有顺序的,先是Management node,然后是Data nodes,最后是SQL nodes

4.1启动Management node

192.168.1.102机子下进入命令行,转到c:/mysql/bin目录下,输入:

ndb_mgmd -fconfig.ini

【执行这个命令的时候出现错误,换成下面的就ok了:

ndb_mgmd -fconfig.ini --configdir=C:\mysql\mysql-cluster

点击回车键。我第一次启动的时候是按照官网的弄得,结果官网上少生成了c:/mysql/mysql-clusterc:/mysql/bin/cluster-logs目录,导致启动不成功,生成这两个目录之后就可以启动了。这两个目录是config.ini文件里配置的Datadir,所以要自己相应的生成,这一点官网没有提示。

4.2启动Data node

192.168.1.103机子下进入命令行,转到D:/ProgramFiles/mysqlcluster/datanode/mysql/bin目录下,输入:

Ndbd

【要修改为:ndbd --connect-string="host=MGDBIP地址"

ndbd --connect-string="host=59.64.43.174"

点击回车键。我第一次启动的时候是按照官网的弄得,结果官网上少生成了D:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data目录,导致启动不成功,生成这个目录之后就可以启动了。这两个目录是config.ini文件里配置的Datadir,所以要自己相应的生成,这一点官网没有提示。

同理,按相同方式在192.168.1.108下启动Data node.

注:此时可通过在Management node中新开一命令行,转到c:/mysql/bin目录下输入命令:

ndb_mgm

启动ndb_mgm.exe,之后输入命令:

       ALLSTATUS

查看到Data node连接是否成功.之后启动正常之后才能继续启动SQL node

4.3启动SQL node

192.168.1.103机子下进入命令行,转到D:/ProgramFiles/mysqlcluster/sqlnode/mysql/bin目录下,输入:

mysqld --console

【启动sqlnode的时候,要注意端口是否被占用,端口被占用的话会有相应的错误提示,我配置的时候出现这个问题了,改一下该sqlnode的端口就行了】

按相同方式启动192.168.1.108下的SQL node

注:可通过在Management node节点的机器下,转到c:/mysql/bin目录下输入命令:

ndb_mgm       

启动ndb_mgm.exe,之后输入命令:

       SHOW

即可查看到各个节点的连接情况。

 

接下来我们可以在某个SQL node 机器上利用MYSQL GUI TOOLSMYSQLadministradtor工具新建一个数据库,然后在其他SQLnode查看,我们可以看到,所有的SQL node都可以看到新生成的数据库,至此MYSQL集群搭建成功.

如果其他SQL node上看不到新生成的数据库中的表,则说明其中的表没有使用ndb引擎,方法:alter table table_name engine=ndb

参考:http://www.ixpub.net/thread-1321138-1-1.html

5MySQL Cluster集群架构

附录:将MySQL Cluster的各个程序安装成Windows Services

每次都要转到相应bin目录下才能启动各个程序,有点不方便,这样我们可以将这些程序安装到Windows Services中,安装方式如下:

1        Managementnode

1.1进入命令行,输入命令

C:/mysql/bin/ndb_mgmd.exe--install

1.2    启动

NET START ndb_mgmd

1.3    关闭

NET STOP ndb_mgmd

 

其他程序的安装类似,略

中间遇到的问题:

1Error Code : 1118

Row size too large. The maximum row size for the usedtable type, not counting BLOBs, is 14000. You have to change some columns toTEXT or BLOBs

问题描述:字段类型是varchar的时候,如果长度太大,比如2000,则将表的引擎改为ndb的时候会报下面的错误:

解决方法:varchar该为longtext便可

2、Error Code : 1005 Cannot create table(……)  (errno:136)

问题描述:只能将学习元数据库中的一部分表的引擎转换成ndb

问题原因:MaxNoOfOrderedIndexes参数的值太少了,刚配置集群完毕的时候没有设置这个参数,其默认值是128,所以导致只能导入一部分表。

解决方法:加入MaxNoOfOrderedIndexes参数并将其设置的足够大。可参考:

http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooforderedindexes

PS:这个问题耽误了一天多的时间,当时只是将注意力放在了MaxNoOfTablesMaxNoOfAttributes两个参数上,没有考虑这个参数。感觉还是对于数据库掌握的不好,遇到问题视野很窄,只能依靠搜索引擎找答案。关于config.ini的详细配置参考:《MySQL Cluster 详细配置文件(config.ini).docx

3、Error Code : 1005 Cannot create table '' (errno: 4335)

问题描述:将表的引擎转换成ndb的时候,个别表报上面的错误。

问题原因:ndb引擎的表,非主键不能设置自增,这些表的id只设置了自增,而没有将其设为主键。可参考:http://lists.mysql.com/cluster/2185

解决方法:将相应的字段设为主键。

4、视图无法自动同步

问题描述:A节点中创建的视图,在B节点中看不到。

问题原因:刚开始以为要改变视图的engine,发现语法错误,也就是不能改变视图的engine。

解决方法:目前无法解决。只能在所有的节点上都创建该视图。参见:http://bugs.mysql.com/bug.php?id=20935

注意事项

从网上看到的,参见:http://blog.csdn.net/ldb2741/article/details/5868783

第四点很重要

1:如果发现关闭一台机器的ndbd进程,另一台机器的ndbd的进程也关闭,则需要修改参数NoOfReplicas。

2:./ndbd --initial不能同时在所有数据节点机器上执行,如执行,会删除所有数据

3:可以像操作非簇类型的数据库那样,操作mysqld节点

4:每次修改config.ini文件,重启ndb_mgmd时,需要删除mysql-cluster文件下的ndb_1_config.bin.1文件,因为他默认调用此文件

【这一点非常重要,我之前没注意到这点,导致修改没用!!!】

5:NDB 簇不支持自动发现数据库的功能,这点很重要,一旦在一个数据节点上创建了世界(world)数据库和它的表,

在簇中的每个SQL节点上还需要发出命令 CREATE DATABASE world,后跟FLUSH TABLES。这样,节点就能

识别数据库并读取其表定义。(在本版本MySQL Cluster 7.1.5下数据库也会自动同步的

6:如果在相关节点服务器启动时,注意查看~/mysql/mysql-cluster目录内的相关日志文件以获取错误信息.

7:在管理节点的配置文件里各[mysqld],[ndbd]和[ndb_mgmd]配置的选项值顺序应该如下:

[mysqld]

Id=4

HostName=192.168.208.3

Id在顶端紧跟其后的是HostName,如果顺序错了,当SQL或数据节点连接管理节点时,管理节点无法正确的定位

到其对应的节点配置上.

因为无法定位到对应的节点配置,当没有剩余的[空节点]时,客户端节点启动时(./mysqld or ./ndbd)

还会报:

Configurationerror: Error : Could not alloc node id at 192.168.0.231 port 1186: No free

node id found formysqld

(API).Failed toinitialize consumers

8:[空节点]是没有指定HostName选项的节点配置均为空节点,空节点可以用来动态配置一些动态IP的节点,

一般管理节点的 配置文件要预留3个以上的空节点,因为备份时需要连接一个节点,如下:

[mysqld]

Id=6


参考了http://blog.csdn.net/guofengzai/article/details/5816791,表示感谢

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值