<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h2 class="title">
      <a name="mysql-cluster-overview">
      </a>
      25.2 NDB Cluster Overview
     </h2>
    </div>
   </div>
  </div>
  <div class="toc">
   <dl class="toc">
    <dt>
     <span class="section">
      <a href="mysql-cluster-basics.html">
       25.2.1 NDB Cluster Core Concepts
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="mysql-cluster-nodes-groups.html">
       25.2.2 NDB Cluster Nodes, Node Groups, Fragment Replicas, and Partitions
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="mysql-cluster-overview-requirements.html">
       25.2.3 NDB Cluster Hardware, Software, and Networking Requirements
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="mysql-cluster-what-is-new.html">
       25.2.4 What is New in MySQL NDB Cluster 8.4
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="mysql-cluster-added-deprecated-removed.html">
       25.2.5 Options, Variables, and Parameters Added, Deprecated or Removed in NDB
8.4
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="mysql-cluster-compared.html">
       25.2.6 MySQL Server Using InnoDB Compared with NDB Cluster
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="mysql-cluster-limitations.html">
       25.2.7 Known Limitations of NDB Cluster
      </a>
     </span>
    </dt>
   </dl>
  </div>
  <a class="indexterm" name="idm46045124382240">
  </a>
  <p>
   <span class="firstterm">
    NDB Cluster
   </span>
   is a technology
    that enables clustering of in-memory databases in a shared-nothing
    system. The shared-nothing architecture enables the system to work
    with very inexpensive hardware, and with a minimum of specific
    requirements for hardware or software.
  </p>
  <p>
   NDB Cluster is designed not to have any single point of failure. In
    a shared-nothing system, each component is expected to have its own
    memory and disk, and the use of shared storage mechanisms such as
    network shares, network file systems, and SANs is not recommended or
    supported.
  </p>
  <p>
   NDB Cluster integrates the standard MySQL server with an in-memory
    clustered storage engine called
   <a class="link" href="mysql-cluster.html" title="Chapter 25 MySQL NDB Cluster 8.4">
    <code class="literal">
     NDB
    </code>
   </a>
   (which stands for
   <span class="quote">
    “
    <span class="quote">
     <span class="emphasis">
      <em>
       N
      </em>
     </span>
     etwork
     <span class="emphasis">
      <em>
       D
      </em>
     </span>
     ata
     <span class="emphasis">
      <em>
       B
      </em>
     </span>
     ase
    </span>
    ”
   </span>
   ). In our
    documentation, the term
   <a class="link" href="mysql-cluster.html" title="Chapter 25 MySQL NDB Cluster 8.4">
    <code class="literal">
     NDB
    </code>
   </a>
   refers to
    the part of the setup that is specific to the storage engine,
    whereas
   <span class="quote">
    “
    <span class="quote">
     MySQL NDB Cluster
    </span>
    ”
   </span>
   refers to the combination
    of one or more MySQL servers with the
   <a class="link" href="mysql-cluster.html" title="Chapter 25 MySQL NDB Cluster 8.4">
    <code class="literal">
     NDB
    </code>
   </a>
   storage engine.
  </p>
  <p>
   An NDB Cluster consists of a set of computers, known as
   <span class="firstterm">
    hosts
   </span>
   , each running one or
    more processes. These processes, known as
   <span class="firstterm">
    nodes
   </span>
   , may include MySQL
    servers (for access to NDB data), data nodes (for storage of the
    data), one or more management servers, and possibly other
    specialized data access programs. The relationship of these
    components in an NDB Cluster is shown here:
  </p>
  <div class="figure">
   <a name="fig-mysql-cluster-components">
   </a>
   <p class="title">
    <b>
     Figure 25.1 NDB Cluster Components
    </b>
   </p>
   <div class="figure-contents">
    <div class="mediaobject">
     <img alt="In this cluster, three MySQL servers (mysqld program) are SQL nodes that provide access to four data nodes (ndbd program) that store data. The SQL nodes and data nodes are under the control of an NDB management server (ndb_mgmd program). Various clients and APIs can interact with the SQL nodes - the mysql client, the MySQL C API, PHP, Connector/J, and Connector/NET. Custom clients can also be created using the NDB API to interact with the data nodes or the NDB management server. The NDB management client (ndb_mgm program) interacts with the NDB management server." src="images/cluster-components-1.png" style="width: 100%; max-width: 750px;"/>
    </div>
   </div>
  </div>
  <br class="figure-break"/>
  <p>
   All these programs work together to form an NDB Cluster (see
   <a class="xref" href="mysql-cluster-programs.html" title="25.5 NDB Cluster Programs">
    Section 25.5, “NDB Cluster Programs”
   </a>
   . When data is stored by the
   <a class="link" href="mysql-cluster.html" title="Chapter 25 MySQL NDB Cluster 8.4">
    <code class="literal">
     NDB
    </code>
   </a>
   storage engine, the tables (and
    table data) are stored in the data nodes. Such tables are directly
    accessible from all other MySQL servers (SQL nodes) in the cluster.
    Thus, in a payroll application storing data in a cluster, if one
    application updates the salary of an employee, all other MySQL
    servers that query this data can see this change immediately.
  </p>
  <p>
   An NDB Cluster 8.4 SQL node uses the
   <a class="link" href="mysqld.html" title="6.3.1 mysqld — The MySQL Server">
    <span class="command">
     <strong>
      mysqld
     </strong>
    </span>
   </a>
   server daemon, which is the same as the
   <a class="link" href="mysqld.html" title="6.3.1 mysqld — The MySQL Server">
    <span class="command">
     <strong>
      mysqld
     </strong>
    </span>
   </a>
   supplied with MySQL Server
    8.4 distributions. You should keep in mind that
   <span class="emphasis">
    <em>
     an instance of
     <a class="link" href="mysqld.html" title="6.3.1 mysqld — The MySQL Server">
      <span class="command">
       <strong>
        mysqld
       </strong>
      </span>
     </a>
     , regardless of
    version, that is not connected to an NDB Cluster cannot use the
     <a class="link" href="mysql-cluster.html" title="Chapter 25 MySQL NDB Cluster 8.4">
      <code class="literal">
       NDB
      </code>
     </a>
     storage engine and cannot access
    any NDB Cluster data
    </em>
   </span>
   .
  </p>
  <p>
   The data stored in the data nodes for NDB Cluster can be mirrored;
    the cluster can handle failures of individual data nodes with no
    other impact than that a small number of transactions are aborted
    due to losing the transaction state. Because transactional
    applications are expected to handle transaction failure, this should
    not be a source of problems.
  </p>
  <p>
   Individual nodes can be stopped and restarted, and can then rejoin
    the system (cluster). Rolling restarts (in which all nodes are
    restarted in turn) are used in making configuration changes and
    software upgrades (see
   <a class="xref" href="mysql-cluster-rolling-restart.html" title="25.6.5 Performing a Rolling Restart of an NDB Cluster">
    Section 25.6.5, “Performing a Rolling Restart of an NDB Cluster”
   </a>
   ). Rolling restarts
    are also used as part of the process of adding new data nodes online
    (see
   <a class="xref" href="mysql-cluster-online-add-node.html" title="25.6.7 Adding NDB Cluster Data Nodes Online">
    Section 25.6.7, “Adding NDB Cluster Data Nodes Online”
   </a>
   ). For more
    information about data nodes, how they are organized in an NDB
    Cluster, and how they handle and store NDB Cluster data, see
   <a class="xref" href="mysql-cluster-nodes-groups.html" title="25.2.2 NDB Cluster Nodes, Node Groups, Fragment Replicas, and Partitions">
    Section 25.2.2, “NDB Cluster Nodes, Node Groups, Fragment Replicas, and Partitions”
   </a>
   .
  </p>
  <p>
   Backing up and restoring NDB Cluster databases can be done using the
   <code class="literal">
    NDB
   </code>
   -native functionality found in the NDB Cluster
    management client and the
   <a class="link" href="mysql-cluster-programs-ndb-restore.html" title="25.5.23 ndb_restore — Restore an NDB Cluster Backup">
    <span class="command">
     <strong>
      ndb_restore
     </strong>
    </span>
   </a>
   program
    included in the NDB Cluster distribution. For more information, see
   <a class="xref" href="mysql-cluster-backup.html" title="25.6.8 Online Backup of NDB Cluster">
    Section 25.6.8, “Online Backup of NDB Cluster”
   </a>
   , and
   <a class="xref" href="mysql-cluster-programs-ndb-restore.html" title="25.5.23 ndb_restore — Restore an NDB Cluster Backup">
    Section 25.5.23, “ndb_restore — Restore an NDB Cluster Backup”
   </a>
   . You can also
    use the standard MySQL functionality provided for this purpose in
   <a class="link" href="mysqldump.html" title="6.5.4 mysqldump — A Database Backup Program">
    <span class="command">
     <strong>
      mysqldump
     </strong>
    </span>
   </a>
   and the MySQL server. See
   <a class="xref" href="mysqldump.html" title="6.5.4 mysqldump — A Database Backup Program">
    Section 6.5.4, “mysqldump — A Database Backup Program”
   </a>
   , for more information.
  </p>
  <p>
   NDB Cluster nodes can employ different transport mechanisms for
    inter-node communications; TCP/IP over standard 100 Mbps or faster
    Ethernet hardware is used in most real-world deployments.
  </p>
 </div>
 <br/>
</div>
