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