一切福田,不離方寸,從心而覓,感無不通。

Windows 环境下配置 MySQL Cluster

关于MySql Cluster的详细介绍就不多说了、因为官方网站上有提供下载。本人一度英语文盲、所以看的是中文的文档、下面提供MySql Cluster白皮书的中文文档下载地址

官方提供:http://www.mysql.com/why-mysql/white-papers/mysql-cluster-scaling-web-databases-zh/

如果官方下载不了:请点击这里

一、准备工作

OK、首先得准备好硬件设施、我这里是3台机器在做群集、结构如下:

管理节点(MGM) 172.16.0.162(db1)
SQL节点1(SQL1) 172.16.0.161(db2)
SQL节点2(SQL2) 172.16.0.202(db3)
数据节点1(NDBD1) 172.16.0.161(db4)
数据节点2(NDBD2)     172.16.0.202(db4)

这个硬件搞定了、现在搞软件,MySql Cluster的下载地址:http://www.mysql.com/downloads/cluster/

最好下载7以上的版本、因为性能好嘛,7.2这个版本的新特性上介绍说是:自适应查询本地化(AQL) 复杂连接速度提高70多倍。当然到底是不是这样我没有测试过不清楚。

二、安装软件

解压mysql-cluster-gpl-7.2.9-win32.zip包
Management node的安装配置。
Management node一定要安装在C盘下,并且是以下的目录(这是在运行此节点时报错,说找不到相对应的目录)。在IP为172.16.0.162的机子上
生成c:/mysql/bin、C:/mysql/mysql-cluster(第一次启动后在这个文件夹会生成类似ndb_1_config.bin.1的文件,好像是为了以后启动加载的配置)

和c:/mysql/bin/cluster-logs目录,在下载解压的文件目录mysql/bin中将ndb_mgmd.exe和ndb_mgm.exe复制到172.16.0.162的c:/mysql/bin目录下。

在172.16.0.162的c:/mysql/bin下生成两个文件,my.ini和config.ini。

my.ini的内容为:

[plain] view plain copy

在CODE上查看代码片派生到我的代码片

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

config.ini的内容:(注:ID不能从0开始,必须大于0)

  1. [NDBD DEFAULT]
  2. NoOfReplicas=2
  3. DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
  4. DataMemory=80M
  5. IndexMemory=18M
  6. [MYSQLD DEFAULT]
  7. [NDB_MGMD DEFAULT]
  8. [TCP DEFAULT]
  9. [NDB_MGMD]
  10. ID=1
  11. HostName=172.16.0.162 #管理节点服务器
  12. # Storage Engines
  13. DataDir=C:/mysql/bin/cluster-logs
  14. [NDBD]
  15. ID=2
  16. HostName=172.16.0.161 #MySQL集群db1的IP地址
  17. #DataDirD:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data #如果不存在就创建一个
  18. [NDBD]
  19. ID=3
  20. HostName=172.16.0.202 #MySQL集群db2的IP地址
  21. #DataDirD:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data  #如果不存在就创建一个
  22. [MYSQLD]
  23. ID=4
  24. HostName=172.16.0.161
  25. [MYSQLD]
  26. ID=5
  27. HostName=172.16.0.202

Data nodes的安装配置

在IP为172.16.0.161 的机子上生成D:/Program Files/mysqlcluster/datanode/mysql/bin、D:/Program Files/mysqlcluster/datanode/mysql/cluster-data、

D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data.在下载的的解压文件夹/bin中将ndbd.exe复制到

172.16.0.161 机子的D:/Program Files/mysqlcluster/datanode/mysql /bin目录下,

并在D:/Program Files/mysqlcluster/datanode/mysql/bin目录下生成my.ini文件,文件的内容为:

  1. [mysql_cluster]
  2. # Options for data node process:
  3. db-connectstring=172.16.0.162
  4. # location of management server

同理在172.16.0.202机子上配置相同的配置,也可以直接复制到172.16.0.202机子上。

SQL node的安装配置

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

  1. [mysqld]
  2. ndbcluster
  3. # Options for data node process:ndbcluster
  4. db-connectstring=172.16.0.162
  5. # location of management server

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

三、启动集群

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

a、启动Management node在172.16.0.162机子下进入命令行,转到c:/mysql/bin目录下,输入:
ndb_mgmd -f config.ini

(
如果报如下错误:MySQL Cluster Management Server mysql-5.5.28 ndb-7.2.9
2013-05-03 10:13:10 [MgmtSrvr] INFO     — The default config directory 'C:/Prog
ram Files/MySQL/MySQL Server 5.5/mysql-cluster' does not exist. Trying to create
it…
Failed to create directory 'C:/Program Files/MySQL/MySQL Server 5.5/mysql-cluste
r', error: 3
2013-05-03 10:13:10 [MgmtSrvr] ERROR    — Could not create directory 'C:/Progra
m Files/MySQL/MySQL Server 5.5/mysql-cluster'. Either create it manually or spec
ify a different directory with --configdir=<path>
则在创建如下文件夹:C:\Program Files\MySQL\MySQL Server 5.5
)
b、启动Data node
在172.16.0.161机子下进入命令行,转到D:/Program Files/mysqlcluster/datanode/mysql/bin目录下,输入:
ndbd --connect-string="nodeid2;host=172.16.0.162:1186"
同理启动172.16.0.202机子,nodeid2是根据管理节点的配置文件
config.ini中的id决定的,如果id为2,则为nodeid2,配置文件中未指定
id,则按顺序执行。
(注)此时可通过在Management node中新开一命令行,转到
c:/mysql/bin目录下输入命令:
ndb_mgm
启动ndb_mgm.exe,之后输入命令:
ALL STATUS
查看到Data node连接是否成功.之后启动正常之后才能继续启动
SQLnode
c、启动SQL node
在172.16.0.161机子下进入命令行,转到D:/Program
Files/mysqlcluster/sqlnode/mysql/bin目录下,输入:
mysqld --console
按相同方式启动172.16.0.202下的SQL node。
(注):可通过在Management node节点的机器下,转到c:/mysql/bin目录
下输入命令:
ndb_mgm
启动ndb_mgm.exe,之后输入命令:
SHOW
即可查看到各个节点的连接情况。
正确显示应该为:

 

错误的显示为:

红框内的信息为Sql节点连接不到的错误、正常启动Sql节点即可、一般出错都是因为没有启动或者是没有配置好Sql节点。

四、测试

(注:创建表时一定要加上engine = ndbcluster default charset utf8; ndbcluster :表示该表为数据节点可操作; default charset:表示设置字符集)
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 节点能不能得到完整的数据。

from:http://blog.csdn.net/hzw2312/article/details/8880761