MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于 Cluster 中这些组件的关系。
----摘自百度文库
官方文档http://dev.mysql.com/doc/refman/5.1/zh/ndbcluster.html
msyql_cluster构建所需软件:
MySQL-Cluster-gpl-client-7.1.18-1.el6.x86_64.rpm
MySQL-Cluster-gpl-management-7.1.18-1.el6.x86_64.rpm
MySQL-Cluster-gpl-server-7.1.18-1.el6.x86_64.rpm
MySQL-Cluster-gpl-storage-7.1.18-1.el6.x86_64.rpm
MySQL-Cluster-gpl-tools-7.1.18-1.el6.x86_64.rpm
可以在官网下载http://www.mysql.com
也可以在我的网盘下载
http://yunpan.cn/QIHQsXz4rkdyx
搭建环境:
系统: RHEL6.3 selinux and iptables disabled
管理节点: 192.168.1.41
数据节点:192.168.1.43
192.168.1.45
sql节点: 192.168.1.42
192.168.1.44
管理节点配置:
[root@cluster1 ~]# rpm -ivh MySQL-Cluster-gpl-management-7.1.18-1.el6.x86_64.rpm [root@cluster1 ~]# rpm -ivh MySQL-Cluster-gpl-tools-7.1.18-1.el6.x86_64.rpm [root@cluster1 ~]# mkdir -p /usr/mysql-cluster/ [root@cluster1 mysql-cluster]# vi config.ini [ndbd default] NoOfReplicas=1 #该全局参数仅能在[NDBD DEFAULT]中设置,它定义了cluster中每个表保 存的副本数。该参数还指定了节点组的大小。节点组指的是保存相同信息的节点集合 DataMemory=50M #该参数定义了数据节点用于保存数据库记录的空间大小,全部空间均是分配在内存 中的,确保你的数据节点具有足够的物理内存来容纳该值,由于我这是使用虚拟机测试, 所以设置的偏小,你可以依照实际环境来定义此值 IndexMemory=10M #该参数用于控制cluster中哈希(混编)索引所使用的存储量 [ndb_mgmd] nodeid=1 #cluster中的每个节点都有唯一的标识,由从1到63的整数表示 hostname=192.168.1.41 #定义管理节点ip datadir=/usr/mysql-cluster #它用于设置保存管理服务器输出文件的位置。 这些文件包括cluster日志文件、进程输出文件、以及端口监督程序的pid文件 [ndbd] nodeid=2 hostname=192.168.1.43 #定义数据节点ip datadir=/usr/local/ndbdata #该参数指定了存放跟踪文件、日志文件、 pid文件以及错误日志的目录 [ndbd] nodeid=4 hostname=192.168.1.45 datadir=/usr/local/ndbdata [mysqld] nodeid=3 hostname=192.168.1.44 #定义sql节点ip [mysqld] nodeid=5 hostname=192.168.1.42 [mysqld]
数据节点配置:
[root@cluster3 ~]# rpm -ivh MySQL-Cluster-gpl-storage-7.1.18-1.el6.x86_64.rpm [root@cluster3 ~]# mkdir -p /usr/local/mysql/ndbdata [root@cluster3 ~]# vi /etc/my.cnf [mysqld] ndbcluster ndb-connectstring=192.168.1.41 [mysql_cluster] ndb-connectstring=192.168.1.41
sql节点配置:
[root@cluster4 ~]# rpm -ivh MySQL-Cluster-gpl-client-7.1.18-1.el6.x86_64.rpm [root@cluster4 ~]# rpm -ivh MySQL-Cluster-gpl-server-7.1.18-1.el6.x86_64.rpm [root@cluster4 ~]# cd /usr/share/doc/MySQL-Cluster-gpl-server-7.1.18/ [root@cluster4 MySQL-Cluster-gpl-server-7.1.18]# cp my-medium.cnf /etc/my.cnf //如果你的内存≤64M,则复制/usr/share/mysql/my-small.cnf为/etc/my.cnf //如果内存是128M,则复制/usr/share/mysql/my-medium.cnf为/etc/my.cnf //如果内存是512M,则复制/usr/share/mysql/my-large.cnf为/etc/my.cnf //如果内存是1-2G,则复制/usr/share/mysql/my-huge.cnf为/etc/my.cnf //如果内存是4G,则复制/usr/share/mysql/my-innodb-heavy-4G.cnf为/etc/my.cnf [root@cluster4 MySQL-Cluster-gpl-server-7.1.18]# vi /etc/my.cnf [mysqld] .... ndbcluster (以下数据添加在[mysqld]区域的最下方) ndb-connectstring=192.168.1.41 [mysql_cluster] ndb-connectstring=192.168.1.41
首先启动管理节点,然后启动存储节点,最后启动SQL节点
管理节点:
[root@cluster1 ~]# ndb_mgmd -f /usr/mysql-cluster/config.ini
数据节点:
[root@cluster3 ~]# ndbd --initial
sql节点:
[root@cluster4 ~]# /etc/init.d/mysql start
测试:
管理节点:
[root@cluster1 ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.1.43 (mysql-5.1.56 ndb-7.1.18, Nodegroup: 0, Master) id=4 @192.168.1.45 (mysql-5.1.56 ndb-7.1.18, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.41 (mysql-5.1.56 ndb-7.1.18) [mysqld(API)] 3 node(s) id=3 @192.168.1.44 (mysql-5.1.56 ndb-7.1.18) id=5 @192.168.1.42 (mysql-5.1.56 ndb-7.1.18) id=6 (not connected, accepting connect from any host) ndb_mgm>