You are on page 1of 19

MySQL Cluster

 是一个关系型数据库管理系统
 目标要实现和大部分标准兼容
 以高速、可靠性出名
 MySQL 5.1 GA
 Cluster 在 5.0 中
 更快
 Cluster 在 5.1 中
 添加新特性
 Mysql 最大的特色
 原因:没有一个存储方式可以适用所有环境
 粒度到底表级
 有多种情况可以选择
 设计自己的引擎
 常见的引擎
 Myisam , innodb , Heap , BDB
 Cluster 也是一个 mysql 的引擎
 他是一个基于内存的存储引擎
 数据和索引保存在内存中
 检查点放在磁盘
 高可用性
 为实现 99.999% 所设计
 在 可以 份
 冗余度是可配置的: NoOfReplicas
 Share-nothing 的架构
 非常普通的硬件基础
 不需要昂贵的 SAN
 存储节点( ndbd )
 可以按照节点组进行组织
 每个节点组持有整个数据的一部分
 最多 48 个节点
 其中一个节点作为事务 coordinator
 管理节点
 根据配置文件 config.ini 管理所有节点
 SQL 节点
 仅仅是 MySQL server
 如同访问其他正常 MySQL 一样
 一个节点是一个进程而非一台独立主机
 至少三台机器
▪ 防止大脑分裂问题
 管理节点不需要特别强大的机器
 数据节点(存储节点)
 一般有很大的内存
 CPU 要求不高 – ndbd 是单线程的
 硬盘 IO 能从配置参数中计算得到
 SQL 节点需要更强大的 CPU
 MySQLd 是多线程的
# file "config.ini" - 2 data nodes and 2 SQL nodes
# This file is placed in the startup directory of ndb_mgmd (the
management
# server)
# The first MySQL Server can be started from any host. The second
can be started
# only on the host mysqld_5.mysqlsystems.com 
[NDBD DEFAULT]
NoOfReplicas= 2
DataDir= /var/lib/mysql-cluster 
[NDB_MGMD]
Hostname= ndb_mgmd.mysqlsystems.com
DataDir= /var/lib/mysql-cluster 
[NDBD]
HostName= ndbd_2.mysqlsystems.com 
[NDBD]
HostName= ndbd_3.mysqlsystems.com 
[MYSQLD]
[MYSQLD]
 SQL server down 了
 能够重启并连接到 cluster
 应用程序连接到其他节点
 存储节点 down 了
 其他存储节点被通知
 因为数据我们做了 Replica ,所以其他节点能负担其失败节点的
任务
 目前,在 5.1 中,发生在这个节点上的事务将被取消,然后再别
的节点上重启。
 管理节点 down 了
 继续服务,并不依赖管理节点
 重启最好是有冗余节点
 MySQL Cluster 是 mysql 的一类存储引

 表的创建仅仅依赖 ENGINE=NDB
 不支持外键!
 MySQL 5.0 支持的特性
 视图
 存储过程
 触发器
 权限标准化 – 需要在每个节点上设置
 支持基于磁盘的记录
 对于包含主键哈希索引的有索引字段,必须仍保存在
RAM 中,但可以将所有其他字段保存在磁盘上。
 大小可变的记录
 在 MySQL 5.1 集群表中,只保存被记录实际占用的字
段部分( varchar 还是 varchar )
 用户定义的分区功能
 用户能够根据主关键的字段部分定义分区
▪ 根据 KEY 、 HASH 、 RANGE 和 LIST 处理程序执行分区操作
 将 MySQL 集群集成到了 MySQL
Replication 中
性能总是您最关心的。。。
 优化Cluster 的方法和普通的 MyISAM 可
能差异非常大 – 他放在内存中
 反应速度往往是 Cluster 的最大弊端
 吞吐量和扩展性却要好很多!
 别忘记了 系统最大的问题 – IO ,而 Cluster
不存在太多这类问题
 Benchmark 说明一切
给 Cluster 集成了查询缓存
 降低了 IndexMemory 使用
 在 MySQL 5.1 中,每条记录约消耗 25 字节的索引内存,每个唯
一索引每记录将使用 25 字节的索引内存
 批量查找
 SELECT * FROM t1 WHERE primary_key IN
(1,2,3,4,5,6,7,8,9,10);
 和之前的 MySQL 相比,该查询的执行速度快 2 ~ 3 倍,原因在
于,全部 10 个 key 查找是在 1 次中发出的,而不是一次发送一
个。
 通过网络接收查询语句
 检查查询缓存
 解析查询
 检查权限
 优化查询
 查询转化
 决定的读取表的顺序
 决定使用的索引
 决定采用哪种算法检索
 执行查询
 根据上述计划,检索数据
 对检索到的数据执行表达式
 如果必要则进行排序
 返回结果集
 三类索引
 主键
 唯一键
 已排序键
Mysqld
一步:哈希查找主键

主键是一个直
接读取的方式

NDBD NDBD
Mysqld
第一步:哈希查找 第二步:从主表中获得数据

唯一键可能指向
其他节点

NDBD NDBD
访问: www.mysqlsystems.com
www.mysqlsystems.com/bbs

You might also like