MySQL集群配置

MySQL集群相对Apache+JBoss集群来说,已经算比较简单的了,这里将MySQL集群的配置和注意事项记录下来,以便查询。

系统环境:
Windows(理论上应该都一样)
软件环境:
MySQL Cluster(http://dev.mysql.com/downloads/cluster/)
注意:这里我使用的是ZIP版的,如果使用安装版本请自己参考并进行配置。

一、原理说明
MySQL集群中,主要分为三种节点:管理节点,数据节点和SQL节点。
管理节点:主要用于管理各个节点,能够通过命令对某个节点进行重启、关闭、启动等操作,也能够监视全部节点的工作状态。
SQL节点:主要是对外提供SQL功能,类似一台普通的MySQL Server。
数据节点:主要是对数据的存储,不提供其他的服务。
原理图如下:
MySQL集群配置

二、服务器说明
本次使用服务器说明如下(理论上应该使用5台服务器为优,这里使用两台):
192.168.0.10(db1) 管理节点(MGM)
192.168.0.10(db2) SQL节点1(SQL1)
192.168.0.11(db3) SQL节点2(SQL2)
192.168.0.10(db4) 数据节点1(NDBD1)
192.168.0.11(db5) 数据节点2(NDBD2)
分别解压下载的zip到各个服务器的D:/mysql-cluster/,并将bin配置到环境变量。

三、服务器配置说明
1、192.168.0.10的特殊配置(管理节点)
A、在D盘下新建文件夹cluster,并增加两个子文件夹cluster-data和cluster-logs(存储管理节点的文件);
B、在D:/mysql-cluster/bin/下增加文件config.ini加入如下的内容:
[NDBD DEFAULT]
NoOfReplicas=2
DataDir=D:/cluster/cluster-data

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

# Managment Server
# 管理节点服务器的地址
[NDB_MGMD]
HostName=192.168.0.10
DataDir=D:/cluster/cluster-logs

# SQL Engines
# SQL节点的地址
[MYSQLD]
HostName=192.168.0.10
[MYSQLD]
HostName=192.168.0.11

# Storage Engines
# 数据节点的地址
[NDBD]
HostName=192.168.0.10
DataDir=D:/mysql-cluster/data
[NDBD]
HostName=192.168.0.11
DataDir=D:/mysql-cluster/data

2、192.168.0.10与192.168.0.11的共同配置
A、复制自带的D:/mysql-cluster/my-default.ini文件为新文件D:/mysql-cluster/my.ini;
B、修改D:/mysql-cluster/my.ini,在结尾处加入如下的配置:
ndbcluster
ndb-connectstring = 192.168.0.10

[mysql_cluster]
ndb-connectstring = 192.168.0.10

C、进行一些自定义的配置(如端口等等,具体配置自行搜索)。

三、服务器启动说明(重要)
1、确保已配置环境变量,如不配置,请切换到D:/mysql-cluster/bin/下运行
2、启动管理节点
在192.168.0.10上运行命令ndb_mgmd.exe -f config.ini –-initial
注意:首次运行或配置文件(config.ini)修改时必须加入参数,以后运行可不再加参数。
3、启动数据节点
分别在两台服务器上运行命令ndbd.exe --initial
注意:首次运行时必须加入参数,以后运行可不再加参数,若带参数运行,则会导致数据丢失。
4、启动SQL节点
分别在两台服务器上运行命令mysqld.exe --console
注意:这里只是测试使用该命令,正确方法是制作服务。
5、集群管理
以上全部启动后,我们可以运行命令ndb_mgm.exe进入管理程序,在ndb_mgm.exe管理程序内运行show命令即可查看当前的节点状况。
6、集群关闭
在ndb_mgm.exe管理程序内运行shutdown命令(或直接运行ndb_mgm -e shutdown),可以关闭管理节点服务和所有的数据节点,然后手动关闭SQL节点服务即可,随意、强行关闭群集系统(关机或关闭进程),会导致数据丢失。
7、注意事项
使用MySQL集群时,所有的表都必须使用ndbcluster作为表的存储引擎(即ENGINE=ndbcluster),否则该表只会保存在本地。

你可能感兴趣的:(mysql)