<div id="docs-body">
 <div class="chapter">
  <div class="titlepage">
   <div>
    <div>
     <h1 class="title">
      <a name="mysql-innodb-cluster-introduction">
      </a>
      Chapter 23 InnoDB Cluster
     </h1>
    </div>
   </div>
  </div>
  <a class="indexterm" name="idm46045124525200">
  </a>
  <p>
   This chapter introduces MySQL InnoDB Cluster, which combines MySQL
    technologies to enable you to deploy and administer a complete
    integrated high availability solution for MySQL. This content is a
    high-level overview of InnoDB Cluster, for full documentation, see
   <a class="ulink" href="/doc/mysql-shell/8.4/en/mysql-innodb-cluster.html" target="_top">
    MySQL InnoDB Cluster
   </a>
   .
  </p>
  <div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">
   <div class="admon-title">
    Important
   </div>
   <p>
    InnoDB Cluster does not provide support for MySQL NDB Cluster. For
      more information about MySQL NDB Cluster, see
    <a class="xref" href="mysql-cluster.html" title="Chapter 25 MySQL NDB Cluster 8.4">
     Chapter 25,
     <i>
      MySQL NDB Cluster 8.4
     </i>
    </a>
    and
    <a class="xref" href="mysql-cluster-compared.html" title="25.2.6 MySQL Server Using InnoDB Compared with NDB Cluster">
     Section 25.2.6, “MySQL Server Using InnoDB Compared with NDB Cluster”
    </a>
    .
   </p>
  </div>
  <p>
   An InnoDB Cluster consists of at least three MySQL Server
    instances, and it provides high-availability and scaling features.
    InnoDB Cluster uses the following MySQL technologies:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      <a class="ulink" href="/doc/mysql-shell/8.4/en/" target="_top">
       MySQL Shell
      </a>
      , which is an
        advanced client and code editor for MySQL.
     </p>
    </li>
    <li class="listitem">
     <p>
      MySQL Server, and
      <a class="link" href="group-replication.html" title="Chapter 20 Group Replication">
       Group
        Replication
      </a>
      , which enables a set of MySQL instances to
        provide high-availability. InnoDB Cluster provides an
        alternative, easy to use programmatic way to work with Group
        Replication.
     </p>
    </li>
    <li class="listitem">
     <p>
      <a class="ulink" href="/doc/mysql-router/8.4/en/" target="_top">
       MySQL Router
      </a>
      , a lightweight
        middleware that provides transparent routing between your
        application and InnoDB Cluster.
     </p>
    </li>
   </ul>
  </div>
  <p>
   The following diagram shows an overview of how these technologies
    work together:
  </p>
  <div class="figure">
   <a name="innodb-cluster-overview-image">
   </a>
   <p class="title">
    <b>
     Figure 23.1 InnoDB Cluster overview
    </b>
   </p>
   <div class="figure-contents">
    <div class="mediaobject">
     <img alt="Three MySQL servers are grouped together as a high availability cluster. One of the servers is the read/write primary instance, and the other two are read-only secondary instances. Group Replication is used to replicate data from the primary instance to the secondary instances. MySQL Router connects client applications (in this example, a MySQL Connector) to the primary instance." src="images/innodb_cluster_overview.png" style="width: 100%; max-width: 394px;"/>
    </div>
   </div>
  </div>
  <br class="figure-break"/>
  <p>
   Being built on MySQL
   <a class="link" href="group-replication.html" title="Chapter 20 Group Replication">
    Group
    Replication
   </a>
   , provides features such as automatic membership
    management, fault tolerance, automatic failover, and so on. An
    InnoDB Cluster usually runs in a single-primary mode, with one
    primary instance (read-write) and multiple secondary instances
    (read-only). Advanced users can also take advantage of a
   <a class="link" href="group-replication-multi-primary-mode.html" title="20.1.3.2 Multi-Primary Mode">
    multi-primary
   </a>
   mode, where all instances are primaries. You can even change the
    topology of the cluster while InnoDB Cluster is online, to ensure
    the highest possible availability.
  </p>
  <p>
   You work with InnoDB Cluster using the
   <a class="ulink" href="/doc/mysql-shell/8.4/en/admin-api-overview.html" target="_top">
    AdminAPI
   </a>
   , provided as
    part of MySQL Shell. AdminAPI is available in JavaScript and
    Python, and is well suited to scripting and automation of
    deployments of MySQL to achieve high-availability and scalability.
    By using MySQL Shell's AdminAPI, you can avoid the need to
    configure many instances manually. Instead, AdminAPI provides an
    effective modern interface to sets of MySQL instances and enables
    you to provision, administer, and monitor your deployment from one
    central tool.
  </p>
  <p>
   To get started with InnoDB Cluster you need to
   <a class="ulink" href="https://dev.mysql.com/downloads/shell/" target="_top">
    download
   </a>
   and
   <a class="ulink" href="/doc/mysql-shell/8.4/en/mysql-shell-install.html" target="_top">
    install
   </a>
   MySQL Shell.
    You need some hosts with MySQL Server instances
   <a class="link" href="installing.html" title="Chapter 2 Installing MySQL">
    installed
   </a>
   , and you can also
   <a class="ulink" href="/doc/mysql-router/8.4/en/mysql-router-installation.html" target="_top">
    install
   </a>
   MySQL Router.
  </p>
  <p>
   InnoDB Cluster supports
   <a class="link" href="clone-plugin.html" title="7.6.7 The Clone Plugin">
    MySQL
    Clone
   </a>
   , which enables you to provision instances simply. In
    the past, to provision a new instance before it joins a set of MySQL
    instances you would need to somehow manually transfer the
    transactions to the joining instance. This could involve making file
    copies, manually copying them, and so on. Using InnoDB Cluster,
    you can simply
   <a class="ulink" href="/doc/mysql-shell/8.4/en/add-instances-cluster.html" target="_top">
    add an
    instance
   </a>
   to the cluster and it is automatically provisioned.
  </p>
  <p>
   Similarly, InnoDB Cluster is tightly integrated with
   <a class="ulink" href="/doc/mysql-router/8.4/en/" target="_top">
    MySQL Router
   </a>
   , and you can use
    AdminAPI to
   <a class="ulink" href="/doc/mysql-shell/8.4/en/registered-routers.html" target="_top">
    work with
   </a>
   them together. MySQL Router can automatically configure itself based on
    an InnoDB Cluster, in a process called
   <a class="ulink" href="/doc/mysql-shell/8.4/en/admin-api-bootstrapping-router.html" target="_top">
    bootstrapping
   </a>
   ,
    which removes the need for you to configure routing manually.
    MySQL Router then transparently connects client applications to the
    InnoDB Cluster, providing routing and load-balancing for client
    connections. This integration also enables you to administer some
    aspects of a MySQL Router bootstrapped against an InnoDB Cluster using
    AdminAPI. InnoDB Cluster status information includes details
    about MySQL Routers bootstrapped against the cluster. Operations enable
    you to
   <a class="ulink" href="/doc/mysql-shell/8.4/en/configuring-router-user.html" target="_top">
    create MySQL Router
    users
   </a>
   at the cluster level, to work with the MySQL Routers
    bootstrapped against the cluster, and so on.
  </p>
  <p>
   For more information on these technologies, see the user
    documentation linked in the descriptions. In addition to this user
    documentation, there is developer documentation for all AdminAPI
    methods in the MySQL Shell JavaScript API Reference or MySQL Shell
    Python API Reference, available from
   <a class="ulink" href="/doc/index-connectors.html" target="_top">
    Connectors and APIs
   </a>
   .
  </p>
 </div>
 <br/>
</div>
