windows 单机安装mysql-cluster(1 + 2 +3)

参考了一篇文章与官方文档,成功在windows平台单机布置了mysql-cluster 7.2.12. 大致过程如下:

  1. 下载mysql-cluster免安装包
    http://dev.mysql.com/downloads/cluster/
    下载非安装版本.

  2. 解压下载的安装包
    例如最后放置的位置是E:\Tools\mysql-cluster\

  3. 节点配置为1 mgmt node + 2 data nodes + 3 sql nodes
    创建三个MySQL实例的数据目录

    E:\Tools\mysql-cluster\data\data1 E:\Tools\mysql-cluster\data\data2 E:\Tools\mysql-cluster\data\data3

    E:\Tools\mysql-cluster\data\data1\mysql E:\Tools\mysql-cluster\data\data1\test E:\Tools\mysql-cluster\data\data2\mysql E:\Tools\mysql-cluster\data\data2\test E:\Tools\mysql-cluster\data\data3\mysql E:\Tools\mysql-cluster\data\data3\test

创建配置文件文件夹

E:\Tools\mysql-cluster\conf

conf\config.ini
[ndbd default]
NoOfReplicas=2

[ndbd]
hostname=localhost
nodeid=2

[ndbd]
hostname=localhost
nodeid=3

[ndb_mgmd]
nodeid=1
hostname=localhost

[mysqld]
#nodeid=4
#hostname=localhost

[mysqld]
#nodeid=5
#hostname=localhost

[mysqld]
#nodeid=6
#hostname=localhost

MySQL实例配置文件

conf\my1.ini

[mysqld]
#ndb_nodeid=4
ndbcluster
datadir=E:\Tools\mysql-cluster\data\data1
basedir=E:\Tools\mysql-cluster
port=9306
server-id=1
log-bin=mycu
log-bin-index=mycu

conf\my2.ini

[mysqld]
#ndb_nodeid=5
ndbcluster
datadir=E:\Tools\mysql-cluster\data\data2
basedir=E:\Tools\mysql-cluster
port=9307
server-id=2
log-bin=mycu2
log-bin-index=mycu2

conf\my3.ini

[mysqld]
#ndb-nodeid=6
ndbcluster
datadir=E:\Tools\mysql-cluster\data\data3
basedir=E:\Tools\mysql-cluster
port=9308
server-id=3
log-bin=mycu3
log-bin-index=mycu3

初始化三个MySQL实例

perl scripts\mysql_install_db --basedir=E:\Tools\mysql-cluster --datadir=E:\Tools\mysql-cluster\data\data1 --force
perl scripts\mysql_install_db --basedir=E:\Tools\mysql-cluster --datadir=E:\Tools\mysql-cluster\data\data2 --force
perl scripts\mysql_install_db --basedir=E:\Tools\mysql-cluster --datadir=E:\Tools\mysql-cluster\data\data3 --force

要运行上面的脚本需要安装perl,本机是安装了cygwin+perl+python
也可以安装其它直接运行在windows下的perl包,记得加入命令行路径到path.

初始化管理节点

bin\ndb_mgmd --initial -f conf\config.ini --configdir=E:\Tools\mysql-cluster

初始化两个数据节点

bin\ndbd --initial -c localhost:1186
bin\ndbd --initial -c localhost:1186

注意,初始化或运行了数据节点的启动脚本后,不要中止数据节点的进程或关闭运行命令的窗口,若关闭,将会使数据节点失效.

启动SQL节点

bin\mysqld --defaults-file=conf\my1.ini
bin\mysqld --defaults-file=conf\my2.ini
bin\mysqld --defaults-file=conf\my3.ini

启动SQL节点后,可以关闭运行启动SQL节点的命令行窗口,SQL节点的进程不会因为命令行窗口关闭而终止.

查看Cluster的状态

bin\ndb_mgm
show

结果如下:

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @127.0.0.1  (mysql-5.5.30 ndb-7.2.12, Nodegroup: 0, Master)
id=3    @127.0.0.1  (mysql-5.5.30 ndb-7.2.12, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @127.0.0.1  (mysql-5.5.30 ndb-7.2.12)

[mysqld(API)]   3 node(s)
id=4    @127.0.0.1  (mysql-5.5.30 ndb-7.2.12)
id=5    @127.0.0.1  (mysql-5.5.30 ndb-7.2.12)
id=6    @127.0.0.1  (mysql-5.5.30 ndb-7.2.12)

此时就基本上搭建成功了.

对于SQL节点的MySQL,上面的例子中用的是MySQL-cluster中的执行程序. 有的文档提到了可以直接用mysql-server, 但经过查证,windows的二进制版本都是不能直接支持ndbcluster引擎的,但源码却是包含的,因此若想用mysql-server在windows下启动SQL节点,则需要自行编译windows下的源码. 后面有机会再尝试用VS编译下,看是否能支持.

参考链接: http://www.ningoo.net/html/tag/mysql-cluster http://www.mysql.com