在上文中,我们配置好了宿主机与虚拟机以及虚拟机之间的互通信配置,现在在这两台虚拟机上安装mysql-cluster双机集群。

参考地址:

1、http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-install-linux.html

2、http://www.cnblogs.com/hustcat/articles/1585600.html

3、http://my.oschina.net/winHerson/blog/112309

这里我们采用二进制tar.gz方式来安装。

一、安装环境及安装包

两台虚拟机,都是debian6.0.7

安装包:mysql-cluster-gpl-7.3.3-linux-glibc2.5-i686.tar.gz

官方下载地址:http://dev.mysql.com/downloads/cluster/

SerA:192.168.56.101

SerB:192.168.56.102

二、在SerA和SerB上安装mysql-cluster

mysql-cluster分为三个节点:SQL节点(也称访问节点),数据节点,管理节点。各节点的具体功能可参考官方文档。

注意,我们这里在SerA和SerB上都同时作为SQL节点,数据节点,管理节点(参考地址2)。

1、创建组和用户(记得获取root权限哈):

groupadd mysql

useradd -g mysql mysql

2、将下载的安装包拷贝到虚拟机下

这个可以安装增强功能包后用共享文件夹来搞定,具体可以参考http://liuy03.blog.163.com/blog/static/125964892010112994736641/

或者用U盘,也可以制成iso文件,用光驱加载进去

3、假设安装包在/var/tmp下,将其解压到/usr/local/目录下,并更名为mysql

cd /var/tmp

tar -C /usr/local/ -xzvf mysql-cluster-gpl-7.3.3-linux-glibc2.5-i686.tar.gz

mv mysql-cluster-gpl-7.3.3-linux-glibc2.5-i686.tar.gz mysql

4、切换到mysql目录下,执行脚本安装mysql

cd mysql

scripts/mysql_install_db --user=mysql

这时如果提示依赖libaio库的话,可以参考地址3解决。

5、修改mysql目录的权限

chown -R root /usr/local/mysql

chown -R root /usr/local/mysql/data

chgrp -R root /usr/local/mysql

6、将所需二进制文件拷贝到环境变量下并赋予执行权限

cd /usr/local/mysql/bin

cp ndbd /usr/local/bin/            ;数据节点进程

cp ndbmtd /usr/local/bin/          ;也是数据节点进程,支持multiple-thread

chmod +x /usr/local/bin/ndb*

cp ndb_mgmd /usr/local/bin/        ;管理节点守护进程

cp ndb_mgm /usr/local/bin/         ;管理节点客户端

chmod +x /usr/local/bin/ndb_mgm*

cp mysqld_safe /usr/local/bin/     ;访问节点进程

chmod +x /usr/local/bin/mysqld_safe

这里也可以用软连接的方式,或者把/usr/local/mysql/bin/加入环境变量中,但是官方文档给出的是直接拷贝,也就这么做了。

以上步骤在SerA和SerB上都需做一次。

三、配置

vi /etc/my.cnf

[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.56.101,192.168.56.102

mkdir /var/lib/mysql-cluster

vi /var/lib/mysql-cluster/config.ini

[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
#Amount of memory required=(SizeofDatabase * NumberOfReplicas * 1.1 ) / NumberOfDataNodes
DataMemory= 128M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir=/var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
StartPartialTimeout=100
StartPartitionedTimeout=100
ArbitrationTimeout=5000
TransactionDeadlockDetectionTimeout=5000
HeartbeatIntervalDbDb=5000
StopOnError=0
[ndb_mgmd default]
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
NodeId=1
HostName= 192.168.56.101
[ndb_mgmd]
NodeId=2
HostName= 192.168.56.102
[ndbd]
NodeId= 3
HostName= 192.168.56.101
[ndbd]
NodeId= 4
HostName= 192.168.56.102
[mysqld]
ArbitrationRank=2
[mysqld]
ArbitrationRank=2
[tcp default]
PortNumber=2202

SerA和SerB上也都要做。

四、启动

在SerA上,依次输入

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --ndb-nodeid=1            启动管理节点

ndbd --ndb-nodeid=3 --initial                                           启动数据节点

mysql_safe --ndb-nodeid=5 --user=mysql &                                启动SQL节点

在SerB上,依次输入

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --ndb-nodeid=2            启动管理节点

ndbd --ndb-nodeid=4 --initial                                           启动数据节点

mysql_safe --ndb-nodeid=6 --user=mysql &                                启动SQL节点

之后,可以输入ndb_mgm -e show查看当前状态。

出现以下信息的话,就表示已启动成功。

Connected to Management Server at: 192.168.56.101:1186

Cluster Configuration

---------------------

[ndbd(NDB)]2 node(s)

id=3@192.168.56.101  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)

id=4@192.168.56.102  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)


[ndb_mgmd(MGM)]2 node(s)

id=1@192.168.56.101  (mysql-5.6.14 ndb-7.3.3)

id=2@192.168.56.102  (mysql-5.6.14 ndb-7.3.3)


[mysqld(API)]2 node(s)

id=5@192.168.56.101  (mysql-5.6.14 ndb-7.3.3)

id=6@192.168.56.102  (mysql-5.6.14 ndb-7.3.3)