通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

为什么说MySQL Cluster是shared-nothing架构的

说MySQL Cluster是shared-nothing架构的原因:1、MySQL Cluster每个节点独立;2、数据分片和复制;3、独立的网络架构。MySQL Cluster每个节点独立是指MySQL Cluster中的每个节点都是一个独立的系统。

一、说MySQL Cluster是shared-nothing架构的原因

1、MySQL Cluster每个节点独立

MySQL Cluster中的每个节点都是一个独立的系统,各节点彼此独立,各自拥有自己的处理器、内存和存储设备等,它们之间没有共享数据的设施。

2、数据分片和复制

在MySQL Cluster中,数据可以按照特定的规则分割成多个分片,每个分片存储在不同的节点上。同时,每个分片也会被多次复制到不同的节点上,以提高数据的可用性和容错性。这种分片和复制的方式可以让MySQL Cluster具有较高的可扩展性和强大的管理能力,能够同时支持大规模集群和高并发访问。

3、独立的网络架构

MySQL Cluster中使用了单独的网络架构,将节点之间的通信隔离开来,这使得节点之间可以进行并行处理,从而提高了整个集群的吞吐量和处理速度。

二、MySQL Cluster介绍

1、简介

MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于 Cluster 中这些组件的关系。

2、特点介绍

“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性等特点。MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在 Cluster 级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于 Cluster本身内的其他数据。目前,MySQL Cluster的 Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中, Cluster的每个部分被视为1个节点。

  • 管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。
  • 数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。
  • SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。
  • 注释:在很多情况下,术语“节点”用于指计算机,但在讨论MySQL Cluster时,它表示的是进程。在单台计算机上可以有任意数目的节点,为此,我们采用术语“Cluster主机”。

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

此外,可以有任意数目的 Cluster客户端进程或应用程序。它们分为两种类型:

  • 标准MySQL客户端:对于MySQL Cluster,它们与标准的(非 Cluster类)MySQL没有区别。换句话讲,能够从用PHP、Perl、C、C++、Java、Python、Ruby等编写的现有MySQL应用程序访问MySQL Cluster。
  • 管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点、启动和停止消息跟踪(仅调试版本)、显示节点版本和状态、启动和停止备份等的命令。

MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。在MySQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。(注意,要想获得MySQL Cluster 的功能,必须安装 mysql-server 和 mysql-max RPM)。

目前能够运行MySQL Cluster 的操作系统有Linux、Mac OS X和Solaris(一些用户通报成功地在FreeBSD上运行了MySQL Cluster ,但MySQL AB公司尚未正式支持该特性),最新版本MySQL Cluste7.1.10支持更多操作系统,包括Windows。

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

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

三、shared-nothing架构介绍

1、简介

Shared-Nothing(SN)是一种分布式计算架构,在这种架构中,每一个节点都是独立的,自己的,在系统中不存在单点竞争。更明确地说,没有节点共享存储和硬盘等内容,都是各自管理自己的数据。SN相对中央控制架构有很大的优点,可以避免单点故障,拥有自我恢复能力,并且不在破坏原有系统的情况下进行升级。

2、内容

  • share-memory:多个cpu共享同一片内存,cpu之间通过内部通讯机制(interconnection network)进行通讯
  • share-disk:每一个cpu使用自己的私有内存区域,通过内部通讯机制直接访问所有磁盘系统
  • share-nothing:每一个cpu都有私有内存区域和私有磁盘空间,而且2个cpu不能访问相同磁盘空间,cpu之间的通讯通过网络连接

3、作用

总的来说,shared-nothing降低了竞争资源的等待时间,从而提高了性能。反过来,如果一个数据库应用系统要获得良好的可扩展的性能,它从设计和优化上就要考虑 shared-nothing体系结构。Share nothing means few contention。它在oracle数据库设计和优化上有很多相同之处。

Share-nothing 对数据库应用主要体现在多用户并行访问系统时候,优化数据库操作的response time上。如果数据库操作能够顺利获得所需要的资源,不发生等待事件,自然可以减少response time。同时也体现在操作尽量少占用资源上,避免浪费时间在无用功上。

延伸阅读1:能运行MySQL Cluster 的操作系统

目前能够运行 MySQL Cluster 的操作系统有 Windows、Linux、Mac OS X 和 Solaris(一些用户通报成功地在 FreeBSD 上运行了 MySQL Cluster ,但 MySQL AB 公司尚未正式支持该特性)。

相关文章