【MySQL】Cluster

概念

MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统;
不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能;
MySQL Cluster 是一个 Share Nothing 的架构,各个 MySQLServer 之间并不共享任何数据;

背景

各种宕机原因

  • 运行环境(35%):磁盘空间耗尽 / 网络
  • 性能问题(35%):糟糕的SQL / 服务器bug
  • 复制问题(20%):主备数据不一致
  • 数据丢失损坏(10%):DROP TABLE / 缺少可用备份

实现高可用

  1. 提升平均失效时间(MTBF):做好管理,防止故障发生
  2. 降低平均恢复时间(MTTR):建立冗余,避免单点失效,故障转移

Cluster 组成

  • SQL服务节点(SQL层):MySQL Server,不需要提供任何存储引擎的MySQL服务器,实现一个数据库在存储层之上的所有事情
  • NDB数据节点(Storage层):实现底层数据存储功能,每一个Cluster 节点保存完整数据的一个 fragment,NDB 节点被组织成一个一个的 NDB Group,一个 NDB Group 实际上就是一组存有完全相同的物理数据的 NDB 节点群
  • Manage节点:管理整个 Cluster 集群中各个节点,包括集群配置、控制节点、维护、数据恢复

这里写图片描述

Cluster 优化

  1. 节点之间的内部网络带宽要保证足够使用;
  2. SQL节点和NDB节点的主机性能配比要均衡,不能一方出现瓶颈,一方处于空闲;
  3. 优化SQL节点和NDB节点的软件配置;

小结

在实际应用中,我们会遇到各种各样的问题导致宕机,为了实现高可用,我们可以提升MTBF和降低MTTR来进行设计,这时,Cluster是一个很好的选择。

MySQL Cluster 的核心在于 NDB Cluster 存储引擎,他不仅对数据进行了水平切分,还对数据进行了跨节点冗余。既解决了数据库的扩展问题,同时也在很大程度上提高了数据库整体可用性。

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/80955535