安装要求
安装环境:CentOS-6.4
安装方式:源码编译安装
软件名称:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
软件安装位置:/usr/local/mysql
数据存放位置:/var/mysql/data
日志存放位置:/var/mysql/logs
集群设计
首先设计集群的安装分配方式,我共需要5台服务器,服务器分配如下:
管理节点: 172.16.172.133
sql节点1: 172.16.172.132
sql节点2: 172.16.172.134
数据节点1: 172.16.172.130
数据节点2: 172.16.172.131
设备的连接方式如
注意:目前这种设计存在的问题是管理节点是单点的。
管理节点
管理节点安装
安装管理节点(172.16.172.133)
[root@localhost /]# groupadd mysql [root@localhost /]# useradd mysql -g mysql [root@localhost /]# cd /usr/local [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql [root@localhost local]# chown -R mysql:mysql mysql [root@localhost local]# cd mysql [root@localhost mysql]# scripts/mysql_install_db –user=mysql
管理节点配置
[root@localhost ~]# mkdir /var/lib/mysql-cluster [root@localhost ~]# cd /var/lib/mysql-cluster [root@localhost mysql-cluster]# vi + /var/lib/mysql-cluster/config.ini
在config.ini 中添加以下内容:
[NDBD DEFAULT] NoOfReplicas=1 [TCP DEFAULT] portnumber=3306 [NDB_MGMD] #设置管理节点服务器 HostName=172.16.172.133 DataDir=/var/mysql/data [NDBD] #设置存储节点服务器(NDB节点) HostName=172.16.172.130 DataDir=/var/mysql/data [NDBD] #第二个NDB节点 HostName=172.16.172.131 DataDir=/var/mysql/data [MYSQLD] #设置SQL节点服务器 HostName=172.16.172.132 [MYSQLD] #第二个SQL节点 HostName=172.16.172.134
管理节点启动
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini [root@localhost ~]# mkdir /var/mysql/logs [root@localhost ~]# netstat -lntpu
看到tcp 0 0 0.0.0.0:1186开放说明启动正常
开启管理节点服务器的1186端口
管理节点检验
执行以下操作:
[root@localhost /]# 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 (not connected, accepting connect from 172.16.172.130) id=3 (not connected, accepting connect from 172.16.172.131) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.15.231 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 2 node(s) id=4 (not connected, accepting connect from 172.16.172.132) id=5 (not connected, accepting connect from 172.16.172.134)
管理节点关闭
[root@localhost /]# /usr/local/mysql/bin/ndb_mgm -e shutdown #成功后终端打印出以下信息 Connected to Management Server at: 172.16.172.133:1186 3 NDB Cluster node(s) have shutdown. Disconnecting to allow management server to shutdown.
数据节点
数据节点安装
数据节点1: 172.16.172.130
数据节点2: 172.16.172.131
[root@localhost /]# groupadd mysql [root@localhost /]# useradd mysql -g mysql [root@localhost /]# cd /usr/local [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql [root@localhost local]# chown -R mysql:mysql mysql [root@localhost local]# cd mysql [root@localhost mysql]# scripts/mysql_install_db --user=mysql [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
数据节点配置
对数据节点进行配置,执行以下操作:
[root@localhost mysql]# mkdir /var/mysql/data [root@localhost mysql]# mkdir /var/mysql/logs [root@localhost mysql]# vi /etc/my.cnf
向文件追加以下内容:
[MYSQLD] ndbcluster ndb-connectstring=172.16.172.133 [MYSQL_CLUSTER] ndb-connectstring=172.16.172.133 [NDB_MGM] connect-string=172.16.172.133
数据节点启动
启动此处时,管理节点服务器防火墙必须开启1186,3306端口。
注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
第一次启动如下:
[root@localhost mysql]# /usr/local/mysql/bin/ndbd --initial 2013-01-30 13:43:53 [ndbd] INFO -- Angel connected to '172.16.172.133 :1186' 2013-01-30 13:43:53 [ndbd] INFO -- Angel allocated nodeid: 2
正常启动方式:
[root@localhost mysql]# /usr/local/mysql/bin/ndbd
数据节点关闭
[root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop Shutting down MySQL.. SUCCESS! /usr/local/mysql/bin/mysqladmin -uroot shutdown
SQL节点安装
SQL节点安装
SQL节点和存储节点(NDB节点)安装相同,都执行以下操作;
sql节点1: 172.16.172.132
sql节点2: 172.16.172.134
SQL节点配置
[root@localhost /]# groupadd mysql [root@localhost /]# useradd mysql -g mysql [root@localhost /]# cd /usr/local [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql [root@localhost local]# chown -R mysql:mysql mysql [root@localhost local]# cd mysql [root@localhost mysql]# scripts/mysql_install_db --user=mysql [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
执行以下操作:
[root@localhost mysql]# mkdir /var/mysql/data //创建存储数据的文件夹 [root@localhost mysql]# mkdir /var/mysql/logs //创建存储日志的文件夹 [root@localhost mysql]# vi /usr/local/mysql/my.cnf //修改配置文件
追加以下内容:
[MYSQLD] ndbcluster ndb-connectstring=172.16.172.133 [MYSQL_CLUSTER] ndb-connectstring=172.16.172.133 [NDB_MGM] connect-string=172.16.172.133
SQL节点启动
执行以下操作:
[root@localhost mysql]# service mysqld start Starting MySQL.. SUCCESS!
SQL节点关闭
最直接的方式:
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -uroot shutdown [root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop Shutting down MySQL.. SUCCESS!
功能测试
在管理节点(172.16.172.133)上查看服务状态
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @172.16.172.130 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master) id=3 @172.16.172.131 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=1 @172.16.172.133 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 2 node(s) id=4 @172.16.172.132 (mysql-5.5.22 ndb-7.2.6) id=5 @172.16.172.134 (mysql-5.5.22 ndb-7.2.6)
可以看到这里的数据节点、管理节点、sql节点都是正常的。
注意:
在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访 问别的Sql节点,需要在对应的Sql节点追加用户。虽然在MySql Cluster7.2版本开始提供了”用户权限共享”。
数据同步性测试
在一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步。
第1步:
SQL节点1(172.16.172.132)上增加数据:
SQL节点1(172.16.172.132)上增加数据: [root@localhost mysql]# /etc/rc.d/init.d/mysqld status //检验mysql是否运行 [root@localhost mysql]# /etc/rc.d/init.d/mysqld start //启动mysql [root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p Enter password: mysql> show databases; mysql> create database testdb2; mysql> use testdb2; mysql> CREATE TABLE td_test2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDBCLUSTER,与配置文件中的名称相同 mysql> INSERT INTO td_test2() VALUES (1); mysql> INSERT INTO td_test2() VALUES (152); mysql> SELECT * FROM td_test2;
第2步:
进入到SQL节点2(172.16.172.134)上查看数据
mysql> use testdb2; Database changed mysql> SELECT * FROM td_test2; +------+ | i | +------+ | 126 | | 1 | +------+ 2 rows in set (0.01 sec)
查看表的引擎是不是NDB:
mysql> show create table td_test2;
第3步:
反向测试,SQL节点2(172.16.172.134)上增加数据:
mysql> create database bb; mysql> use bb; mysql> CREATE TABLE td_test3 (i INT) ENGINE=NDB; mysql> INSERT INTO td_test3 () VALUES (98); mysql> SELECT * FROM td_test3;
SQL节点1(172.16.172.132)上查看数据:
mysql> use bb; Database changed mysql> SELECT * FROM td_test3; +------+ | i | +------+ | 98 | +------+ 1 row in set (0.00 sec)
关闭集群
先关闭管理节点,然后关闭SQL节点和数据节点。
集群启动操作顺序
要再次启动集群,按照以下顺序执行:
管理节点 ->数据节点 –> SQL节点
注意:此次启动数据节点时不要加”–initial”参数。
MySQL双主 + Keepalived主备自动切换方案一
MySQL双主 + Keepalived主备自动切换方案二
MySQL主从 + Keepalived主从自动切换方案
MySQL双主 + 多从高可用方案---MMM
MySQL + Pecemaker(Heartbeat) + DRBD主高可用
MySQL + RHCS 高可用方案
MySQL + Cluser 集群架构
Percona Xtradb Cluster 集群高可用性解决方案
管理节点
172.16.14.145 mgm1
172.16.14.150 mgm2
172.16.14.146 ndb1
172.16.14.147 ndb2
172.16.14.148 sql1
172.16.14.149 sql2
集群配置概述:
安装版本:mysql cluster 7.3.5
操作系统 :centos6.5(X64)
软件名称
管理节点IP
数据节点
SQL节点IP:
数据节点
SQL节点IP:
配置ssh等效不要密码登录
配置hosts解析
配置本地yum源 6.5
安装依赖包:yum install -y glibc perl libaio-devel
x32位系统要安装兼容库组:yum -y groupinstall "Compatibility libraries"
1. mysql旧版本清除:
首先使用如下命令来清理之前操作系统自带的mysql安装:
yum -y remove mysql
然后使用如下命令:
rpm -qa | grep mysql*
对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
每个节点都要那么做
关闭 /etc/init.d/iptables stop
/etc/init.d/ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
vim /etc/selinux/config
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
#SELINUXTYPE=targeted 注释掉这行
软件安装位置:/opt/local/mysql
数据存放位置:/opt/mysql/data SQL节点存储数据的路径
日志存放位置:/opt/mysql/logs
/opt/local/cluster 管理集群时收集的集群信息的存放路径
机器描述:
192.168.100.1 : 管理节点
192.168.100.2 : SQL节点1
192.168.100.3 : SQL节点2
192.168.100.4 : 数据节点1
192.168.100.5 : 数据节点2
软件需求:Linux下64位MySQL:mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz
1、安装管理节点:192.168.100.1
(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解压到 /usr/local/myql 下
(2)在mysql目录下创建文件夹:mkdir /usr/local/myql/mysql-cluster
(3)在mysql目录下创建文件夹:mkdir /usr/local/myql/cluster-conf
(4)编辑config.ini文件:vi /usr/local/mysql/cluster-conf/config.ini 内容如下:
[ndbd default] NoOfReplicas=2DataMemory=200MIndexMemory=100M
[ndb_mgmd]
id=1
hostname=192.168.100.1
DataDir=/usr/local/mysql/mysql-cluster
[ndbd]id=2HostName=192.168.100.4DataDir=/usr/local/mysql/ndbdata
[ndbd]
id=5
HostName=192.168.100.5
DataDir=/usr/local/mysql/ndbdata
[mysqld]id=6HostName=192.168.100.2
[mysqld]
id=7
HostName=192.168.100.3
2、安装SQL节点 192.168.100.4 & 192.168.100.5
(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解压到 /usr/local/myql 下
(2)添加mysql用户
groupadd mysql
useradd -g mysql mysql
(3)添加权限
chown -R mysql:mysql /usr/local/mysql
(4)拷贝配置文件
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
(5)初始化数据库
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
(6)拷贝守护进程所需文件
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
(7)配置守护进程
chkconfig –add mysqld
chkconfig –level 35 mysqld on
(8)更改配置文件 vi /etc/my.cnf 内容如下:
[mysqld]
port = 3306
socket = /tmp/mysql.sock
ndbcluster
ndb-connectstring=192.168.100.1 #管理节点的IP
3、安装数据节点
(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解压到 /usr/local/mysql 下
(2)在mysql目录下创建文件:mkdir /usr/local/mysql/ndbdata
(3)编辑my.cnf: vi /etc/my.cnf 在文件末尾添加如下内容:
[mysql_cluster]
ndb-connectstring=192.168.100.1 #管理节点IP
4、配置环境变量:
#config mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
5、启动集群
启动顺序:管理服务器->存储节点->SQL节点
(1)启动管理节点
rm mysql/mysql-cluster/ndb_1_config.bin.1 #如果config.ini有改动则要加上
ndb_mgmd -f /usr/local/mysql/cluster-conf/config.ini
(2)启动存储节点
ndbd --initial #(第一次启动必须添加选项)
ndbd #不是第一次启动需要执行的命令
(3)启动SQL节点
/etc/rc.d/init.d/mysqld start 或 service mysqld start
6、关闭集群
(1)关闭SQL节点
/etc/rc.d/init.d/mysqld stop 或service mysqld stop
(2)关闭管理节点
ndb_mgm〉 shutdown
7、验证配置的正确性
在管理节点执行:ndb_mgm -> show
8、创建表
创建表需要以 ndbcluster 作为存储引擎
CREATE TABLE `test`.`test` (
`id` VARCHAR(45) NOT NULL,
`name` VARCHAR(9),
PRIMARY KEY (`id`)
) ENGINE = ndbcluster;
8. 关闭集群服务
关闭sql节点等同于停止mysql服务,此时外界数据不将再进来。然后关闭管理节点
~/mysql/bin/ndb_mgm -e shutdown rm ~/mysql/mysql-cluster/ndb_1_config.bin.1 #不是必须的,如果config.ini有改动则要加上
这样操作后,管理节点和数据节点都将停止服务
Notes:
1:如果发现关闭一台机器的ndbd进程,另一台机器的ndbd的进程也关闭,则需要修改参数NoOfReplicas。 2:./ndbd --initial 不能同时在所有数据节点机器上执行,如执行,会删除所有数据 3:可以像操作非簇类型的数据库那样,操作mysqld节点 4:每次修改config.ini文件,重启ndb_mgmd时,需要删除mysql-cluster文件下的ndb_1_config.bin.1文件, 因为他默认调用此文件 5:NDB 簇不支持自动发现数据库的功能,这点很重要,一旦在一个数据节点上创建了世界(world)数据库和它的表, 在簇中的每个SQL节点上还需要发出命令 CREATE DATABASE world,后跟FLUSH TABLES。这样,节点就能 识别数据库并读取其表定义。(在本版本MySQL Cluster 7.1.5下数据库也会自动同步的) 6:如果在相关节点服务器启动时,注意查看~/mysql/mysql-cluster目录内的相关日志文件以获取错误信息. 7:在管理节点的配置文件里各[mysqld],[ndbd]和[ndb_mgmd]配置的选项值顺序应该如下: [mysqld] Id=4 HostName=192.168.208.3 Id在顶端紧跟其后的是HostName,如果顺序错了,当SQL或数据节点连接管理节点时,管理节点无法正确的定位 到其对应的节点配置上. 因为无法定位到对应的节点配置,当没有剩余的[空节点]时,客户端节点启动时(./mysqld or ./ndbd) 还会报: Configuration error: Error : Could not alloc node id at 192.168.0.231 port 1186: No free node id found for mysqld (API).Failed to initialize consumers 8:[空节点]是没有指定HostName选项的节点配置均为空节点,空节点可以用来动态配置一些动态IP的节点, 一般管理节点的 配置文件要预留3个以上的空节点,因为备份时需要连接一个节点,如下: [mysqld] Id=6
---------------
体系结构
MySQL Cluster 由3个不同功能的服务构成,每个服务由一个专用的守护进程提供,一项 服务也叫做一个节点,下面来介绍每个节点的功能。
The management (MGM) node
管理节点,用来实现整个集群的管理,理论上一般只启动一个,而且宕机也不影响 cluster 的服务,这个进程只在cluster 启动以及节点加入集群时起作用, 所以这个节点不是很需要冗余,理论上通过一台服务器提供服务就可以了。
通过 ndb_mgmd 命令启动,使用 config.ini 配置文件
The storage or database (DB) node:
数据库节点,用来存储数据,可以和管理节点(MGM) , 用户端节点(API) 可以处在 不同的机器上,也可以在同一个机器上面,集群中至少要有一个DB节点,2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。
通过 ndbd 命令启动,第一次创建好cluster DB 节点时,需要使用 –init参数初始化。
例如: bin/ndbd –ndb-connectstring=ndb_mgmd.mysqlcluster.net –initial
The client (API) node:
客户端节点,通过他实现 cluster DB 的访问,这个节点也就是普通的 mysqld 进程, 需要在配置文件中配置ndbcluster 指令打开 NDB Cluster storage engine 存储引擎,增加 API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点 可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在 同一台服务器上。
通过 mysqld_safe 命令启动,
这3类节点可以分布在不同的主机上,比如 DB 可以是多台专用的服务器,也可以 每个DB都有一个API,当然也可以把API分布在Web前端的服务器上去,通常来说, API越多cluster的性能会越好。
Mysql集群探索与实践
1. 准备好3台机器,从官网下载最新的mysql集群版本,此处用到mysql-cluster-gpl-7.1.5.tar.gz源码包, 配置并安装,记得加上
–with-plugins=innobase,ndbcluster (innobase可选)
3台机器分别是192.168.207.153,192.168.208.3,192.168.208.9,具体分配如下
管理节点(ndb_mgmd):192.168.207.153
数据节点(ndbd): 192.168.208.3
数据节点(ndbd): 192.168.208.9
SQL节点(mysqld): 192.168.208.3
SQL节点(mysqld): 192.168.208.9
2. 在mysql目录下新建mysql-cluster文件夹,切换到mysql-cluster,新建config.ini
[NDBD DEFAULT] NoOfReplicas=2 #备份,副本,这样的话2台数据节点的数据就会同步 DataMemory=200M IndexMemory=100M [TCP DEFAULT] portnumber=2202 [NDB_MGMD] #管理节点 id=1 hostname=192.168.207.153 datadir=/home/taozi/mysql/mysql-cluster [NDBD] #数据节点 id=2 hostname=192.168.208.3 datadir=/home/taozi/mysql/data [NDBD] #数据节点 id=3 hostname=192.168.208.9 datadir=/home/taozi/mysql/data [MySQLD] #sql节点 id=4 hostname=192.168.208.3 [MySQLD] #sql节点 id=5 hostname=192.168.208.9 [MySQLD] #sql节点 id=6
3. 在管理节点服务器上启动管理节点服务 (如果不存在ndb_mgmd那么要从libexec下面复制过来)
~/mysql/bin/ndb_mgmd -f ~/mysql/mysql-cluster/config.ini
4. 进入2台数据节点服务器,分别启动数据节点服务
~/mysql/bin/ndbd (第一次启动使用 ~/mysql/bin/ndbd --initial)
5. 最后分别进入sql节点服务器,修改my.cnf,加入
[MYSQL_CLUSTER] ndb-connectstring=192.168.207.153 [MYSQLD] ndbcluster ndb-connectstring=192.168.207.153
启动mysql服务
/home/taozi/mysql/bin/mysqld_safe --ledir=/home/taozi/mysql/bin / --log-error=/home/taozi/mysql/data/t.err --datadir=/home/taozi/mysql/data / --socket=/home/taozi/mysql/tmp/mysql.sock --pid-file=/home/taozi/mysql/data/mysqld.pid &
6. 此时回到管理节点
~/mysql/bin/ndb_mgm -e show
可以看到显示如下
[taozi@search153 mysql]$ ./show.sh Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.208.3 (mysql-5.1.47 ndb-7.1.5, Nodegroup: 0, Master) id=3 @192.168.208.9 (mysql-5.1.47 ndb-7.1.5, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.207.153 (mysql-5.1.47 ndb-7.1.5) [mysqld(API)] 3 node(s) id=4 @192.168.208.3 (mysql-5.1.47 ndb-7.1.5) id=5 @192.168.208.9 (mysql-5.1.47 ndb-7.1.5) id=6 (not connected, accepting connect from any host)
7. 进入sql节点,在test数据库创建表
CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=ndbcluster DEFAULT CHARSET=gbk
切换到2台数据节点服务器~/mysql/data/ndb_2_fs和~/mysql/data/ndb_3_fs看看,
或者直接去数据库查,数据已经同步了!
3.2 管理节点
主机xp1的C:\mysql-cluster\bin下新建一个文件config.ini,其中内容如下:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 #复本数量,此例采用默认值2
DataDir=C:/mysql-cluster/bin/cluster-data # 数据节点存储目录
DataMemory=80M # 数据存储分配的内存,酌情设置
IndexMemory=18M # 索引存储分配的内存,酌情设置
[ndb_mgmd]
# Management process options:
HostName=192.168.109.130 # 管理节点所在主机IP
DataDir=C:/mysql-cluster/bin/cluster-logs # 管理节点日志目录
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
HostName=192.168.109.132 # 节点所在主机IP
datadir=C:/mysql-cluster/data # 数据存储目录
[ndbd]
# Options for data node "B":
HostName=192.168.109.133 # 节点所在主机IP
datadir=C:/mysql-cluster/data
[mysqld]
# SQL node options:
HostName=192.168.109.130 # SQL节点所在主机IP
这些为集群整体的配置信息,其中[ndbd default]为全局数据节点的默认配置模块。[ndb_mgmd]为管理节点配置模块。[ndbd]为数据节点配置模块。[mysqld]为sql节点配置模块。#后面为注释内容,实际文件可以将这些注释去掉,以防止因为中文的存在导致mysql解析文件失败。启动管理节点直接调用bin目录下的ndb_mgmd.exe即可,但是我们在命令后指定我们上述的配置文件和集群配置的缓存目录,所以命令为
ndb_mgmd.exe --config-file=C:\\mysql-cluster\\bin\\config.ini --configdir=C:\mysql-cluster\bin\config-cache
为了方便起见,我们在c:\mysql-cluster\bin目录下新建一个文件ndb_mgmd_start.bat,将上述管理节点启动的命令写入该批处理文件中作为启动命令。
3.3 数据节点
我们以数据节点1为例介绍,节点2与此类似。在主机xp2的c:\mysql-cluster下新建文件my.ini。键入如下内容
[mysql_cluster]
# Options for data node process:
ndb-connectstring=192.168.109.130 # location of management server
3.4 SQL节点
在xp1节点的c:\mysql-cluster目录下新建文件my.ini,键入如下内容
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=192.168.109.130 # location of management serve
其中ndbcluster指定了存储引擎为集群环境,ndb-connectstring指定了管理节点的地址。
到此为止所有节点配置工作就完成了。
4. 节点管理
4.1 ndb_mgm介绍
mysql cluster提供了ndb_mgm.exe来对集群进行管理,在xp1主机的c:\mysql-cluster\bin目录下。我们可以直接在命令行执行该命令进入管理控制台。(注:该程序需要在管理节点启动后才能执行)
常用的命令包括:
show: 显示集群中所有节点的状态。如图-04
图-04
Node_id status: 查看node_id对应的节点的状态
shutdown –e: 停止管理节点和所有数据节点。SQL节点不会被停掉。
笔者就简单用了这几个,其他命令还很多,可以通过HELP命令来查看。
4.2 节点启停
Mysql cluster启动有顺序要求,管理节点要最先启动。
启动管理节点:在命令行中进到c:\mysql-cluster\bin目录下,执行我们之前编辑的批处理文件ndb_mgmd_start.bat.如果启动正常,我们此时可以执行ndb_mgm程序,通过管理控制台查看节点状态了。
启动数据节点:依次在各个数据节点主机的命令行中进到c:\mysql-cluster\bin目录下,执行ndbd.exe 即可。通过ndb_mgm的管理控制台查看启动状态。
启动SQL节点:在SQL节点的命令行中进到c:\mysql-cluster\bin目录下,执行mysqld.exe即可。通过ndb_mgm的管理控制台查看启动状态。
节点停止:在ndb_mgm的管理控制台中执行shutdown –e 则管理节点和数据节点均会停止。另外SQL节点需要手动停止。
5. 验证
集群环境搭建完成我们可以对其进行验证。此处偷偷懒,直接引用一个官网的图,如图-05
图-05
注意图中建表语句中的ENGINE=NDBCLUSTER。
如果有兴致还以通过外部程序验证一下。注意外部程序访问URL还是SQL节点。
好了,这样我们的mysql 集群环境就搭建完成了。