MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。
“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。
下面我们简单介绍MySQL Cluster如何安装与配置:
基本设定
管理(MGM)节点:192.168.1.235
MySQL服务器(SQL)节点:192.168.1.236
数据(NDBD)节点"A":192.168.1.237
数据(NDBD)节点"B":192.168.1.238
mysql的集群安装可以有三种方式,一是直接下载二进制使用,二是使用rpm安装,三是源码编译。我们这里使用第二种安装。
1.1、每个节点做相同的操作
rpm -qa | grep mysql //查询系统已安装的mysql程序包;
rpm -e XXX --nodeps //XXX 为上面查找出来的所有程序包;
yum -y install libaio libaio-devel // 安装IO程序开发包;
cd /usr/local/src/ //进入用户src目录,你也可以自行选择;
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/MySQL-Cluster-gpl-7.3.7-1.el6.i686.rpm-bundle.tar //下载mysql cluster 32位安装包;
tar xvf MySQL-Cluster-gpl-7.3.7-1.el6.i686.rpm-bundle.tar // 解压下载好的安装包;
mkdir -p /var/lib/mysql/data
mkdir -p /var/run/mysqld
chmod -R 1777 /var/lib/mysql
chmod -R 1777 /var/run/mysqld
rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.i686.rpm //安装完,会有提示root的密码存放在/roo/.mysql_secret文件;
rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.i686.rpm
新建一个文件 vi /etc/my.cnf ,内容如下:
-------------------------------------------
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
max_connections=100
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
ndbcluster
ndb-connectstring=192.168.1.235
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.1.235
-------------------------------------------
1.2、配置管理节点
mkdir -p /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
touch config.ini
vim config.ini ,内容如下:
--------------------------------------
[ndb_mgmd default]
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
HostName=192.168.1.235
[ndbd default]
NoOfReplicas=2
DataMemory=100M
IndexMemory=10M
[ndbd]
HostName=192.168.1.237
DataDir=/var/lib/mysql
[ndbd]
HostName=192.168.1.238
DataDir=/var/lib/mysql
[mysqld]
HostName=192.168.1.236
--------------------------------------
注意:节点的启动顺序为管理节点->数据节点->SQL节点
2.1、启动管理节点
/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
2.2、启动数据节点
首次启动需要--initial参数初始化,下一次启动就不需要了
ndbd --initial
2.3、启动SQL节点
mysqld_safe &
2.4、检查状态
如果一切正常,在管理节点执行命令 ndb_mgm -e show应该会输出类似信息:
[root@MGM mysql-cluster]# ndb_mgm -e show
Connected to Management Server at: 192.168.1.235:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.237 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
id=3 @192.168.1.238 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.235 (mysql-5.6.21 ndb-7.3.7)
[mysqld(API)] 1 node(s)
id=4 @192.168.1.236 (mysql-5.6.21 ndb-7.3.7)
2.5、测试SQL服务数据库是否正常
在SQL节点上执行如下数据库操作:
# mysql -uroot -p //输入/root/.mysql_secret 文件里的密码;
mysql> set password password('xxxxxx'); //首次进入数据库,必须先更改root密码;
mysql> create database clusterdb;use clusterdb;
mysql> create table simples (id int not null primary key) engine=ndb;
mysql> insert into simples values (1),(2),(3),(4);
mysql> select * from simples;
如果出现:
+----+
| id |
+----+
| 1 |
| 2 |
| 4 |
| 3 |
+----+
则表示工作正常。
3.1、关闭mysql集群,可在管理节点在执行如下命令:
# ndb_mgm -e shutdown
3.2、重启管理节点
# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
3.3、重启数据节点
# ndbd