MySQL Cluster 是MySQL 官方集群部署方案, 支持自动分片、读写扩展;通过实时备份冗余数据。适合于分布式计算环境的高实用、高冗余版本,是可用性最高的方案,官方声称可做到99.999%的可用性。MySQL Cluster采用NDB Cluster 存储引擎,包括MySQL服务器、NDB Cluster数据节点、管理服务器,以及(可能)专门的数据访问程序。

NDB 是一种“内存中”的存储引擎,它具有可用性高和数据一致性等特点。

实际上,MySQL集群是把NDB 内存集群存储引擎与标准的MySQL服务器集成。它包含一组计算机,每个都跑一个或者多个进程,这可能包括一个MySQL服务器,一个数据节点,一个管理服务器和一个专有的数据访问程序。

MySQL cluster配置中,由3个不同功能的服务构成,每个服务由一个专用的守护进程提供,一项服务也叫做一个节点,下面来介绍每个节点的功能:

一、管理(MGM)节点

MGM节点作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。理论上一般只启动一个,而且宕机也不影响 cluster 的服务,这个进程只在cluster 启动以及节点加入集群时起作用, 所以这个节点不是很需要冗余,理论上通过一台服务器提供服务就可以了。

管理服务器(MGM节点)负责管理 Cluster配置文件和 Cluster日志。 Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster日志。

二、数据节点

用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数,分段的数目为节点总数除以NoOfReplicas 所得。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点,通常设置为两副本,两个以上时就能实现集群的高可用保证,数据副本节点增加时,集群的处理速度会变慢。

数据更新使用读已提交隔离级别(read-committed isolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phased commit:节点组内主从同步采用同步复制),保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。

无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。

Mysqlcluster将所有的索引列都保存在主存中,其他非索引列可以存储在内存中或者通过建立表空间存储到磁盘上。

如果数据发生改变(insert,update,delete等),mysql 集群将发生改变的记录写入重做日志,然后通过检查点定期将数据定入磁盘。由于重做日志是异步提交的,所以故障期间可能有少量事务丢失。为了减少事务丢失,mysql集群实现延迟写入(默认延迟两秒,可配置),这样就可以在故障发生时完成检查点写入,而不会丢失最后一个检查点。一般单个数据节点故障不会导致任何数据丢失,因为集群内部采用同步数据复制。

由于同步复制一共需要4次消息传递,故mysql cluster的数据更新速度比单机mysql要慢。所以mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。

对cluster进行扩容增加数据节点组时不会导致数据更新速度降低。相反,数据更新速度会变快,因为数据是分别处理,每个节点组所保存的数据是不一样的,也能减少锁定。

三、SQL节点

用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。Cluster中可以有多个sql节点,通过每个sql节点查询到的数据都是一致的,通常来说,sql节点越多,分配到每个sql节点的负载就越小,系统的整体性能就越好。

所有的这些节点构成一个完成的MySQL集群体系: 数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。

通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的 Cluster 数据管理。

【NDB存储引擎】

MySQL Cluster 使用了一个专用的基于内存的存储引擎NDB,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。

在ndb上可以建立两种类型的表:

1、内存表:所有数据(包括index)都在内存中。同时会在磁盘上保存数据,因此不用担心数据会丢失,datanode会在启动的时候把数据加载到内存。

2、磁盘表:仅主键、索引字段保存在内存中,其他字段保存在磁盘文件里。

MySQL Cluster 特性

通过自动分片实现高水平的写入扩展能力:MySQL Cluster 自动将表分片(或分区)到不同节点上,使数据库可以在低成本的商用硬件上横向扩展,同时保持对应用程序完全应用透明。

99.999% 的可用性:凭借其分布式、无共享架构,MySQL Cluster 可提供 99.999% 的可用性,确保了较强的故障恢复能力和在不停机的情况下执行预定维护的能力。

SQL 和NoSQL API:MySQL Cluster 让用户可以在解决方案中整合关系数据库技术和NoSQL技术中的最佳部分,从而降低成本、风险和复杂性。

实时性能:MySQL Cluster 提供实时的响应时间和吞吐量,能满足最苛刻的 Web、电信及企业应用程序的需求。

具有跨地域复制功能的多站点集群:跨地域复制使多个集群可以分布在不同的地点,从而提高了灾难恢复能力和全球 Web 服务的扩展能力。

联机扩展和模式升级:为支持持续运营,MySQL Cluster 允许向正在运行的数据库模式中联机添加节点和更新内容,因而能支持快速变化和高度动态的负载。

缺点

基于内存,数据库的规模受集群总内存的大小限制,重启时,数据节点将数据load到内存耗时较长

多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响

mysql cluster 分片_MySQL Cluster --01相关推荐

  1. mysql cluster 用户_mysql cluster统一用户权限

    统一用户权限 使用mysql cluster由于存放用户信息的表user是指mysql库里面的,而且这些表是MyISAM存储引擎的.如果希望所有的sql节点都有统一的用户权限,可以把创建用户的脚本在每 ...

  2. mysql cluster 视频_mysql cluster 部署实战

    一.MySQL集群介绍 MySQL集群是一种技术,该技术允许在无共享的系统中部署"内存中"数据库的集群.通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由 ...

  3. mysql cluster 安装_MYSQL Cluster安装攻略

    1. 为mysqld增加一个登录用户和组:--5个节点都要做此步骤 shell> groupadd mysql shell> useradd -g mysql mysql 2.安装管理节点 ...

  4. mysql多级分片_MySQL分片方法?

    分割MySQL表的最佳方法是不要这样做,除非完全不可避免地这样做. 在编写应用程序时,通常希望以最大化速度和开发人员速度的方式执行此操作. 您只在必要时优化延迟(答案准备就绪的时间)或吞吐量(每个时间 ...

  5. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster等版本的区别

    MySQL分为多种版本如Community.Enterprise.Cluster和Workbench等,MySQL不同版本有什么区别?LAMPLNMP分享: MySQL版本区别 ● MySQL Com ...

  6. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster有何区别

    MySQL版本Enterprise/Community/Cluster有何区别 发布时间:2020-05-28 14:23:34 来源:PHP中文网 阅读:278 作者:三月 下面讲讲关于MySQL版 ...

  7. MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)

    MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...

  8. CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE

    CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE 文章目录 CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR M ...

  9. 108.第十九章 MySQL数据库 -- MySQL高可用 Galera Cluster(十八)

    6.3.3 Galera Cluster 6.3.3.1 Galera Cluster介绍 Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的 ...

  10. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)

    文章目录 Docker 下Redis Cluster 分片集群搭建 1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 1.2 Cluster 分片集群 的作用 1.3哈希槽(h ...

最新文章

  1. 国外论坛BCH关注度暴涨
  2. 解决npm下载包失败的问题
  3. modelMapper.map的一个使用例子
  4. 级数求和(信息学奥赛一本通-T1087)
  5. C语言输出九九乘法表
  6. 如何刷新DNS缓存(Windows,Mac,Chrome)
  7. 10000以内的质数表
  8. 专访 | 阿里前辈李智慧:聊聊我这20年的架构经!
  9. 微信小程序模板消息测试- formId 的获取
  10. Base64的编码(Encode)与解码(Decode)
  11. 优秀网页设计微博汇总
  12. Android如何判定一张图片是不是灰度的
  13. 【SQL 中级语法 2】自连接的用法
  14. python数据分析可视化
  15. Xcode与C++之游戏开发: 游戏对象
  16. VUE(四):引入iview
  17. hs8545m5虚拟服务器,华为HS8545M光猫怎么开启路由功能
  18. altera DCFIFO IP核 功能仿真
  19. [HNOI2017]影魔
  20. 在asp.net页面的aspx文件中插入代码段

热门文章

  1. 44、Search contract
  2. Java计算点的质心_java-矩阵的质心
  3. 2020 CCF BDCI小学数学应用题自动解题解题思路
  4. 简单易懂的方式去看C语言精华--指针
  5. VEMD11940FX01光学传感器
  6. html鼠标滚轴后下一页,鼠标滚动有一页ppt不能马上下翻,而是上下移动,移动到一定位置后才翻到下一页,这是怎么回事?怎么解决?...
  7. 全面认识数据指标体系
  8. Linux编程之ICMP洪水攻击
  9. java代码实现的帧动画
  10. 行为识别:行人跌倒检测(含源码)