Ubuntu带的mySQL服务软件包 已经包含了mySQL群集所需的3个组件:
mySQL
mySQL NDB
mySQL NDB Management
mySQL使用NDB来实现群集,NDB是一种“内存中”的存储引擎,可用性高、数据一致性好。
数据保存在存储节点(Data Nodes)中,也就是图中的ndbd节点。SQL语句在SQL节点上执行,也就是图中的mySQLd节点,群集中的右下角DNB管理服务器也就是ndb_mgmd节点。
关于mySQL群集的3个主要组成部分,我们来介绍一下。
负载均衡节点 是用来访问群集数据的。
存储节点 是用来保存群集数据的 其服务的启停是由脚本/etc/init.d/mysql-ndb来管理的。
管理节点 用来管理群集内的其他节点,比如配置信息,启动或停止及诶单,执行备份等。其服务的启停是由/etc/init.d/mysql-ndb-mgm脚本管理的,由于这类节点是管理者,该节点必须先启动,其他两类节点再启动。
以下操作系统均是ubuntu server 11.10
安装的Mysql版本mysql-server-5.1
安装的mysql群集版本mysql-cluster-server-5.1
两个数据节点 Data1和Data2
一个管理节点mgm
要求这些虚拟机都能访问Internet,因为安装mysql-server-5.1和mysql-cluster-server-5.1都需要从internet下载安装包。
IP地址和计算机名称如下所示
1. 克隆系统
使用安装了mySQL的ubuntu克隆出新的系统,更改服务器名称和IP地址。
data1的IP地址192.168.80.223 服务器名称为data1
data2的IP地址为192.168.80.224 服务器名称为data2
mgm的地址为192.168.80.225 服务器名称为mgm
2. 禁用防火墙
在三个节点上禁用防火墙。
ufw disable
管理节点需要
3. 安装管理节点
root@mgm:~# apt-get install mysql-server-5.1
root@mgm:~# apt-get install mysql-cluster-server-5.1
因为已经安装了mySQL,所以只需要安装mysql-cluster-server-5.1
设置mysql管理员密码
4. 配置mgm
在mgm服务器上完成
5. 创建配置文件
root@mgm:~# vi /etc/mysql/ndb_mgmd.cnf
6. 编辑配置文件 去掉注释
[NDBD DEFAULT]
NoOfReplicas=2 #每个数据节点的镜像数量
DataMemory=10MB #每个数据节点中给数据分配的内存
IndexMemory=25MB #每个数据节点中给索引分配的内存
MaxNoOfTables=256
MaxNoOfOrderedIndexes=256
MaxNoOfUniqueHashIndexes=128
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
#The NDB Management Node (this one)
[NDB_MGMD]
Id=1 #管理节点ID,群集中每个节点都有独立的id
HostName=192.168.80.225 #管理节点IP
DataDir=/var/lib/mysql-cluster #管理节点数据目录
#the first NDB Data Node
[NDBD]
#数据节点配置
Id=2
HostName=192.168.80.223
DataDir=/var/lib/mysql-cluster
#the second NDB Data Node
[NDBD]
#数据节点配置
Id=3
HostName=192.168.80.224
DataDir=/var/lib/mysql-cluster
#the first mySQL node
[MYSQLD]
#mysql节点
Id=4
HostName=192.168.80.223 #指定HostName表明可以连接数据节点的sql节点地址
#如果不写该地址,表明任意地址的sql节点都可以连接
#the second mySQL node
[MYSQLD]
Id=5
HostName=192.168.80.224
7. 启动服务管理服务
/etc/init.d/mysql-ndb-mgm restart
在以下两个服务器配置data1和data2进行配置。
8. 安装mysql和mysql-cluster
先安装mysql服务器,如果已经安装,只需要安装mysql-cluster-server-5.1
root@data2:~# apt-get install mysql-server-5.1
root@data2:~# apt-get install mysql-cluster-server-5.1
9. 配置my.cnf
root@data1:~# vi /etc/mysql/my.cnf
将以下文本按图示位置拷贝到配置文件
ndbcluster
ndb-connectstring=192.168.80.225
[MYSQL_CLUSTER]
ndb-connectstring=192.168.80.225
10. 启动mysql服务,或重启mySQL服务 restart,如果启动失败,请仔细查看配置。
root@data1:~# /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
11. 启动NDB服务 start-initial是初始化,第一次启动使用该参数,以后重启该服务使用restart参数。
root@data1:~# /etc/init.d/mysql-ndb start-initial
* Initial start of MySQL NDB Data Node ndbd 2012-03-29 15:18:18 [ndbd] INFO -- Angel connected to '192.168.80.201:1186'
2012-03-29 15:18:18 [ndbd] INFO -- Angel allocated nodeid: 3
[ OK ]
12. 在data2上执行data1上所有步骤
13. 在管理节点mgm上测试配置存储节点
输入以下命令,进入mgm客户端界面
Ndb_mgm
Show 注意 必须出现如下输出才能,可以看到一个管理节点,两个mysql数据库,两个存储节点ndb,在这里NDB和mySQL是同一个服务器。
如果一个断掉data1的网卡,
再次查看状态
14. 连接data1网卡
Quit命令退出
如果连接出现问题,必须在两个存储节点,重启两个服务,直到成功为止。
配置为群集的mysql,创建的数据库能够自动同步到其他存储节点。创建表时使用engine=ndbcluster作为参数,能够将表放置到群集中,自动在多个mysql同步数据。
15. 查看data1和data2上现有数据库
16. 在data1上创建一个数据库db1
17. 在data2上创建数据库
18. 在群集环境中创建数据库和表
在data1数据存储节点创建一个数据db1,在该数据库创建一个表,该表放置于群集中。如果创建表时不添加engine=ndbcluster;则该表只存在域data1,不会复制到data2。
注意:
mysql> use db1;
mysql> create table t1 (sid int,sname varchar(20))engine=ndbcluster;
mysql> insert t1 values (1,'han');
mysql> create table t2 (sid int,sname varchar(20));
mysql> insert t2 values (1,'han');
19. 在data2上查看
可以看到db1的数据库中出现t1表。数据也复制过来。
在data2上插入一条记录
20. 在data1上查看
发现在data2上插入的记录再data1也出现。
如果服务器断电需要重启,首先启动mgm节点,再开启存储节点。一切正常。
群集关系一旦产生,管理节点可以关机,两个存储节点照样复制功。
广告