MySQL InnoDB cluster provides a complete high availability solution for MySQL. MySQL Shell includes AdminAPI which enables you to easily configure and administer a group of at least three MySQL server instances to function as an InnoDB cluster. Each MySQL server instance runs MySQL Group Replication, which provides the mechanism to replicate data within InnoDB clusters, with built-in failover. AdminAPI removes the need to work directly with Group Replication in InnoDB clusters, but for more information see Chapter 18, Group Replication which explains the details. MySQL Router can automatically configure itself based on the cluster you deploy, connecting client applications transparently to the server instances. In the event of an unexpected failure of a server instance the cluster reconfigures automatically. In the default single-primary mode, an InnoDB cluster has a single read-write server instance - the primary. Multiple secondary server instances are replicas of the primary. If the primary fails, a secondary is automatically promoted to the role of primary. MySQL Router detects this and forwards client applications to the new primary. Advanced users can also configure a cluster to have multiple-primaries.
InnoDB cluster does not provide support for MySQL NDB Cluster.
NDB Cluster depends on the
engine as well as a number of programs specific to NDB Cluster which
are not furnished with MySQL Server 8.0;
NDB is available only as part of the MySQL
NDB Cluster distribution. In addition, the MySQL server binary
(mysqld) that is supplied with MySQL Server
8.0 cannot be used with NDB Cluster. For more
information about MySQL NDB Cluster, see
Chapter 22, MySQL NDB Cluster 8.0.
Section 22.1.5, “MySQL Server Using InnoDB Compared with NDB Cluster”, provides information
about the differences between the
NDB storage engines.
The following diagram shows an overview of how these technologies work together:
MySQL Shell includes the AdminAPI, which is accessed
dba global variable and its
associated methods. The
methods enable you to deploy, configure, and administer InnoDB
clusters. For example, use the
dba.createCluster() method to create an
MySQL Shell enables you to connect to servers over a socket connection, but AdminAPI requires TCP connections to a server instance. Socket based connections are not supported in AdminAPI.
MySQL Shell provides online help for the AdminAPI. To
list all available
dba commands, use the
dba.help() method. For online help on a
specific method, use the general format
object.help('methodname'). For example:
mysql-js> dba.help('getCluster') Retrieves a cluster from the Metadata Store. SYNTAX dba.getCluster([name][, options]) WHERE name: Parameter to specify the name of the cluster to be returned. options: Dictionary with additional options. RETURNS The cluster object identified by the given name or the default cluster. DESCRIPTION If name is not specified or is null, the default cluster will be returned. If name is specified, and no cluster with the indicated name is found, an error will be raised. The options dictionary accepts the connectToPrimary option,which defaults to true and indicates the shell to automatically connect to the primary member of the cluster. EXCEPTIONS MetadataError in the following scenarios: - If the Metadata is inaccessible. - If the Metadata update operation failed. ArgumentError in the following scenarios: - If the Cluster name is empty. - If the Cluster name is invalid. - If the Cluster does not exist. RuntimeError in the following scenarios: - If the current connection cannot be used for Group Replication.