一、下载软件
从MySQL官网下载MySQL Cluster
点击链接http://dev.mysql.com/downloads/cluster/如下图:
我这里使用的版本是MySQL Cluster 7.3.9,所以选择上图右侧红色超链接Looking for the lastest GA version?找到我要的版本MySQL Cluster 7.3.9,选择Windows(x86, 32-bit), ZIP Archive下载。
只需下载这一关文件就可以了,所有需要的软件都在这个包里面了。
注意:不同的版本配置方法可能有一点点不同。
二、设备的准备和功能分布
Node | IP Address |
Management (MGMD) node1 | 172.16.0.221 |
Data (NDBD) node2 | 172.16.0.225 |
Data (NDBD) node3 | 172.16.1.174 |
MySQL server (SQL) node4 | 172.16.0.225 |
MySQL server (SQL) node5 | 172.16.1.174 |
这里需要准备3台电脑,IP根据自己的情况配置。我这里的172.16.0.225可以同时作为SQL Node和Data Node使用。172.16.1.174也是同时作为SQL Node和Data Node使用。
注意:3台电脑的网络必须是互通的,我这里使用的是局域网的3台电脑。
三、5个Node的安装和配置
Management Node的安装和配置
Management node的安装按照以下目录进行(后面会说如何修改这些目录):
在172.16.0.221的Node1电脑上生成如下3个目录结构:C:\mysql\bin、C:\mysql\mysql-cluster、C:\mysql\cluster-logs。
从下载的文件mysql-cluster-gpl-7.3.9-win32.zip中的bin目录中只解压出两个文件ndb_mgm.exe和ndb_mgmd.exe到目录C:\mysql\bin中。
Node1安装完成,下面开始配置:
在C:\mysql\bin目录下新建两个文件my.ini和config.ini
my.ini如下:
[mysql_cluster] # Options for management node process config-file=C:/mysql/bin/config.ini
config.ini如下:
[ndbd default] # Options affecting ndbd processes on all data nodes: NoOfReplicas=2 # Number of replicas #DataDir=... # Directory for each data node's data files # Forward slashes used in directory path, # rather than backslashes. This is correct; # see Important 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] # Management process options: HostName=172.16.0.221 # Hostname or IP address of management node DataDir=C:/mysql/cluster-logs # Directory for management node log files [ndbd] # Options for data node 2: # (one [ndbd] section per data node) HostName=172.16.0.225 # Hostname or IP address DataDir=D:/Program Files/mysqlcluster/datanode/mysql/cluster-data # Directory for each data node's data files [ndbd] # Options for data node 3: HostName=172.16.1.174 # Hostname or IP address DataDir=E:/Program Files/mysqlcluster/datanode/mysql/cluster-data # Directory for each data node's data files [mysqld] # SQL node 4 options: HostName=172.16.0.225 # Hostname or IP address [mysqld] # SQL node 5 options: HostName=172.16.1.174 # Hostname or IP address
Node1配置完成。以上配置中的IP Address根据自己的实际设备IP配置。
2.两个Data Node的安装和配置
在172.16.0.225的Node2电脑上生成如下两个目录结构:D:\Program Files\mysqlcluster\datanode\mysql\bin、D:\Program Files\mysqlcluster\datanode\mysql\cluster-data。
cluster-data目录路径需要与Node1电脑的config.ini文件中node2处DataDir值相匹配。
从下载的文件mysql-cluster-gpl-7.3.9-win32.zip中的bin目录中只解压出一个文件ndbd.exe放到目录D:\Program Files\mysqlcluster\datanode\mysql\bin中。
Node2安装完成,下面开始配置:
在D:\Program Files\mysqlcluster\datanode\mysql目录下新建一个文件my.ini,如下:
[mysql_cluster] # Options for data node process: ndb-connectstring=172.16.0.221 # location of management server
Node2配置完成。ndb-connectstring处的IP为Node1电脑的IP
Node3的安装和配置同Node2一样配置在相同的位置就可以了。我这里172.16.1.174电脑上没有D盘,所以就配置到了E盘相应的目录下。
3.两个SQL Node的安装和配置
在IP为172.16.0.225的电脑上生成目录结构:D:\Program Files\mysqlcluster\sqlcluster\sqlnode\mysql。
将下载的文件mysql-cluster-gpl-7.3.9-win32.zip里面的所有内容解压到D:\Program Files\mysqlcluster\sqlcluster\sqlnode\mysql目录,
SQL Node4安装完成。下面配置SQL Node4,在D:\Program Files\mysqlcluster\sqlcluster\sqlnode\mysql目录新建文件my.ini,内如如下:
[mysqld] # Options for mysqld process: ndbcluster # run NDB storage engine ndb-connectstring=172.16.0.221 # location of management server
SQL Node4配置完成。ndb-connectstring处的IP为Node1电脑的IP
SQL Node5的安装和配置同SQL Node4一样配置在相同的位置就可以了。我这里还是在E盘。
到此MySQL Cluster的安装配置全部完成。下面开始运行并测试。
四、运行
启动各个Node节点是有顺序的,先是Management Node,然后是Data Nodes,最后是SQL Nodes。
启动Management Node
在172.16.0.221电脑上,转到C:/mysql/bin目录下,输入:
ndb_mgmd -f config.ini --configdir=C:/mysql/mysql-cluster
启动成功,会在C:\mysql\mysql-cluster目录下生成文件ndb_1_config.bin.1
错误:configdir参数如果没有指定或者目录不存在会出现如下错误:
C:\mysql\bin>ndb_mgmd -f config.ini MySQL Cluster Management Server mysql-5.6.24 ndb-7.3.9 2015-07-10 15:17:34 [MgmtSrvr] INFO -- The default config directory 'C:/Program Files/MySQL/MySQL Server 5.6/mysql-cluster' does not exist. Trying to create it... Failed to create directory 'C:/Program Files/MySQL/MySQL Server 5.6/mysql-cluster', error: 3 2015-07-10 15:17:34 [MgmtSrvr] ERROR -- Could not create directory 'C:/Program Files/MySQL/MySQL Server 5.6/mysql-cluster'. Either create it manually or specify a different directory with --configdir=<path>
因为MySQL Cluster默认的目录为C:/Program Files/MySQL/MySQL Server 5.6/mysql-cluster,可以通过帮助命令查看:
ndb_mgmd --help
如果config.ini文件修改了,启动时要加上--reload参数,输入:
ndb_mgmd -f config.ini --relaod --configdir=C:/mysql/mysql-cluster
2.启动Data Node
在172.16.0.225电脑上,转到D:\Program Files\mysqlcluster\datanode\mysql\bin目录,输入:
ndbd
同理,在172.16.1.174电脑上,转到E::\Program Files\mysqlcluster\datanode\mysql\bin目录,输入:
ndbd
启动成功,如下:
第一次启动Data Node时,需要加上--initial参数,输入:
ndbd --initial
注意:--initial只在第一次启动的时候使用,否则会把数据清空。
注:此时可以通过在Management Node中新开一个DOS,转到C:/mysql/bin目录,输入:
ndb_mgm
启动ndb_mgm.exe之后,输入:
ALL STATUS
查看Data Node连接是否成功,启动成功之后才能继续启动SQL Node。
3.启动SQL Node
在IP为172.16.0.225电脑上,转到D:\Program Files\mysqlcluster\sqlnode\mysql\bin目录下,输入:
mysqld --console
按同样的方式,在IP为172.16.1.174电脑上,转到E:\Program Files\mysqlcluster\sqlnode\mysql\bin目录下,输入:
mysqld --console
启动成功。至此MySQL Cluster启动成功。
可以在ndb_mgm.exe之后,输入:
SHOW
查看说了有节点的状态,如图:
接下来我们可以在某个SQL Node电脑上,新建数据库,然后在其他SQL Node上查看。我们可以看到说了有的SQL Node都可以看到新生成的数据库,至此MySQL集群搭建完成。
附图:MySQL Cluster集群架构
4.停止MySQL Cluster集群
停止MySQL Cluster集群顺序是 先SQL节点,后管理节点
停止SQL节点:在mysqld --console窗口,直接按CTRL + C退出
停止管理节点:在172.16.0.221电脑上,打开DOS,转到C:\mysql\bin目录,输入:
ndb_mgm -eshutdown
五、测试
注:创建表时一定要加上engine=ndbcluster default charset utf8;
ndbcluster表示该表为数据节点可操作
default charset表示字符集
在172.16.1.174电脑上创建表,在172.16.0.225上查询表信息,看数据是否同步。
另外的测试(单点故障测试):
1,还可以人为停止某一个数据节点(Ctrl+C中断DOS命令ndbd.exe,停止该服务),看看所有的 SQL 节点是不是能正常工作。
2,在某一个数据节点停止后,进行数据库操作。然后重新开启该数据节点,看看群集中的所有的 SQL 节点能不能得到完整的数据。
六、注册为Service
每次都要转到相应bin目录下才能启动各个程序,有点不方便,这样我们可以将这些程序安装到Windows Services中,安装方式如下:
Management Node
进入命令行,输入命令
C:/mysql/bin/ndb_mgmd.exe --install
启动:
NET START ndb_mgmd
关闭:
NET STOP ndb_mgmd
其它service服务的安装同上。