19.4 X Plugin

This section explains how to configure and monitor the X Plugin.

 File: manual.info.tmp, Node: x-plugin-encrypted-connections, Next: x-plugin-options-variables, Prev: x-plugin, Up: x-plugin

19.4.1 Using Encrypted Connections with X Plugin

This section explains how to configure X Plugin to use encrypted connections. For more background information, see *note encrypted-connections::.

To enable configuring support for encrypted connections, X Plugin has 'mysqlx_ssl_XXX' system variables, which can have different values from the 'ssl_XXX' system variables used with MySQL Server. For example, X Plugin can have SSL key, certificate, and certificate authority files that differ from those used for MySQL Server. These variables are described at note x-plugin-options-system-variables::. Similarly, X Plugin has its own 'Mysqlx_ssl_XXX' status variables that correspond to the MySQL Server encrypted-connection 'Ssl_XXX' status variables. See note x-plugin-status-variables::.

At initialization, X Plugin determines its configuration for encrypted connections as follows:

This means that, on a server with X Plugin enabled, you can choose to have MySQL Protocol and X Protocol connections share the same encryption configuration by setting only the 'ssl_XXX' variables, or have separate encryption configurations for MySQL Protocol and X Protocol connections by configuring the 'ssl_XXX' and 'mysqlx_ssl_XXX' variables separately.

To have MySQL Protocol and X Protocol connections use the same encryption configuration, set only the 'ssl_XXX' system variables in 'my.cnf':

 [mysqld]
 ssl_ca=ca.pem
 ssl_cert=server-cert.pem
 ssl_key=server-key.pem

To configure encryption separately for MySQL Protocol and X Protocol connections, set both the 'ssl_XXX' and 'mysqlx_ssl_XXX' system variables in 'my.cnf':

 [mysqld]
 ssl_ca=ca1.pem
 ssl_cert=server-cert1.pem
 ssl_key=server-key1.pem

 mysqlx_ssl_ca=ca2.pem
 mysqlx_ssl_cert=server-cert2.pem
 mysqlx_ssl_key=server-key2.pem

For general information about configuring connection-encryption support, see *note using-encrypted-connections::. That discussion is written for MySQL Server, but the parameter names are similar for X Plugin. (The X Plugin 'mysqlx_ssl_XXX' system variable names correspond to the MySQL Server 'ssl_XXX' system variable names.)

The 'tls_version' system variable that determines the permitted TLS versions for MySQL Protocol connections also applies to X Protocol connections. The permitted TLS versions for both types of connections are therefore the same.

Encryption per connection is optional, but a specific user can be required to use encryption for X Protocol and MySQL Protocol connections by including an appropriate 'REQUIRE' clause in the note 'CREATE USER': create-user. statement that creates the user. For details, see note create-user::. Alternatively, to require all users to use encryption for X Protocol and MySQL Protocol connections, enable the 'require_secure_transport' system variable. For additional information, see *note mandatory-encrypted-connections::.

 File: manual.info.tmp, Node: x-plugin-options-variables, Next: x-plugin-system-monitoring, Prev: x-plugin-encrypted-connections, Up: x-plugin

19.4.2 X Plugin Options and Variables

This section describes the command options and system variables that configure X Plugin, as well as the status variables available for monitoring purposes. If configuration values specified at startup time are incorrect, X Plugin could fail to initialize properly and the server does not load it. In this case, the server could also produce error messages for other X Plugin settings because it cannot recognize them.

 File: manual.info.tmp, Node: x-plugin-option-variable-reference, Next: x-plugin-options-system-variables, Prev: x-plugin-options-variables, Up: x-plugin-options-variables

19.4.2.1 X Plugin Option and Variable Reference ...............................................

This table provides an overview of the command options, system variables, and status variables provided by X Plugin.

X Plugin Option and Variable Reference

Name Cmd-Line Option System Status Var Scope Dynamic File Var Var

mysqlx

Yes Yes

Mysqlx_address

                                   Yes         Global      No
                                                           

mysqlx_bind_address

Yes Yes Yes Global No

Mysqlx_bytes_received

                                   Yes         Both        No
                                                           

Mysqlx_bytes_sent

                                   Yes         Both        No
                                                           

mysqlx_connect_timeout

Yes Yes Yes Global Yes

Mysqlx_connection_accept_errors

                                   Yes         Both        No
                                                           

Mysqlx_connection_errors

                                   Yes         Both        No
                                                           

Mysqlx_connections_accepted

                                   Yes         Global      No
                                                           

Mysqlx_connections_closed

                                   Yes         Global      No
                                                           

Mysqlx_connections_rejected

                                   Yes         Global      No
                                                           

Mysqlx_crud_create_view

                                   Yes         Both        No
                                                           

Mysqlx_crud_delete

                                   Yes         Both        No
                                                           

Mysqlx_crud_drop_view

                                   Yes         Both        No
                                                           

Mysqlx_crud_find

                                   Yes         Both        No
                                                           

Mysqlx_crud_insert

                                   Yes         Both        No
                                                           

Mysqlx_crud_modify_view

                                   Yes         Both        No
                                                           

Mysqlx_crud_update

                                   Yes         Both        No
                                                           

Mysqlx_errors_sent

                                   Yes         Both        No
                                                           

Mysqlx_errors_unknown_message_type

                                   Yes         Both        No
                                                           

Mysqlx_expect_close

                                   Yes         Both        No
                                                           

Mysqlx_expect_open

                                   Yes         Both        No
                                                           

mysqlx_idle_worker_thread_timeout

Yes Yes Yes Global Yes

Mysqlx_init_error

                                   Yes         Both        No
                                                           

mysqlx_max_allowed_packet

Yes Yes Yes Global Yes

mysqlx_max_connections

Yes Yes Yes Global Yes

mysqlx_min_worker_threads

Yes Yes Yes Global Yes

Mysqlx_notice_other_sent

                                   Yes         Both        No
                                                           

Mysqlx_notice_warning_sent

                                   Yes         Both        No
                                                           

Mysqlx_port

                                   Yes         Global      No
                                                           

mysqlx_port

Yes Yes Yes Global No

mysqlx_port_open_timeout

Yes Yes Yes Global No

Mysqlx_rows_sent

                                   Yes         Both        No
                                                           

Mysqlx_sessions

                                   Yes         Global      No
                                                           

Mysqlx_sessions_accepted

                                   Yes         Global      No
                                                           

Mysqlx_sessions_closed

                                   Yes         Global      No
                                                           

Mysqlx_sessions_fatal_error

                                   Yes         Global      No
                                                           

Mysqlx_sessions_killed

                                   Yes         Global      No
                                                           

Mysqlx_sessions_rejected

                                   Yes         Global      No
                                                           

Mysqlx_socket

                                   Yes         Global      No
                                                           

mysqlx_socket

Yes Yes Yes Global No

Mysqlx_ssl_accept_renegotiates

                                   Yes         Global      No
                                                           

Mysqlx_ssl_accepts

                                   Yes         Global      No
                                                           

Mysqlx_ssl_active

                                   Yes         Both        No
                                                           

mysqlx_ssl_ca

Yes Yes Yes Global No

mysqlx_ssl_capath

Yes Yes Yes Global No

mysqlx_ssl_cert

Yes Yes Yes Global No

Mysqlx_ssl_cipher

                                   Yes         Both        No
                                                           

mysqlx_ssl_cipher

Yes Yes Yes Global No

Mysqlx_ssl_cipher_list

                                   Yes         Both        No
                                                           

mysqlx_ssl_crl

Yes Yes Yes Global No

mysqlx_ssl_crlpath

Yes Yes Yes Global No

Mysqlx_ssl_ctx_verify_depth

                                   Yes         Both        No
                                                           

Mysqlx_ssl_ctx_verify_mode

                                   Yes         Both        No
                                                           

Mysqlx_ssl_finished_accepts

                                   Yes         Global      No
                                                           

mysqlx_ssl_key

Yes Yes Yes Global No

Mysqlx_ssl_server_not_after

                                   Yes         Global      No
                                                           

Mysqlx_ssl_server_not_before

                                   Yes         Global      No
                                                           

Mysqlx_ssl_verify_depth

                                   Yes         Global      No
                                                           

Mysqlx_ssl_verify_mode

                                   Yes         Global      No
                                                           

Mysqlx_ssl_version

                                   Yes         Both        No
                                                           

Mysqlx_stmt_create_collection

                                   Yes         Both        No
                                                           

Mysqlx_stmt_create_collection_index

                                   Yes         Both        No
                                                           

Mysqlx_stmt_disable_notices

                                   Yes         Both        No
                                                           

Mysqlx_stmt_drop_collection

                                   Yes         Both        No
                                                           

Mysqlx_stmt_drop_collection_index

                                   Yes         Both        No
                                                           

Mysqlx_stmt_enable_notices

                                   Yes         Both        No
                                                           

Mysqlx_stmt_ensure_collection

                                   Yes         Both        No
                                                           

Mysqlx_stmt_execute_mysqlx

                                   Yes         Both        No
                                                           

Mysqlx_stmt_execute_sql

                                   Yes         Both        No
                                                           

Mysqlx_stmt_execute_xplugin

                                   Yes         Both        No
                                                           

Mysqlx_stmt_kill_client

                                   Yes         Both        No
                                                           

Mysqlx_stmt_list_clients

                                   Yes         Both        No
                                                           

Mysqlx_stmt_list_notices

                                   Yes         Both        No
                                                           

Mysqlx_stmt_list_objects

                                   Yes         Both        No
                                                           

Mysqlx_stmt_ping

                                   Yes         Both        No
                                                           

Mysqlx_worker_threads

                                   Yes         Global      No
                                                           

Mysqlx_worker_threads_active

                                   Yes         Global      No
                                               

 File: manual.info.tmp, Node: x-plugin-options-system-variables, Next: x-plugin-status-variables, Prev: x-plugin-option-variable-reference, Up: x-plugin-options-variables

19.4.2.2 X Plugin Options and System Variables ..............................................

To control activation of X Plugin, use this option:

If X Plugin is enabled, it exposes several system variables that permit control over its operation:

 File: manual.info.tmp, Node: x-plugin-status-variables, Prev: x-plugin-options-system-variables, Up: x-plugin-options-variables

19.4.2.3 X Plugin Status Variables ..................................

The X Plugin status variables have the following meanings.

 File: manual.info.tmp, Node: x-plugin-system-monitoring, Prev: x-plugin-options-variables, Up: x-plugin

19.4.3 Monitoring X Plugin

To monitor X Plugin, use the status variables that it exposes. See *note x-plugin-status-variables::.

 File: manual.info.tmp, Node: mysql-innodb-cluster-introduction, Next: mysql-cluster, Prev: document-store, Up: Top

20 InnoDB Cluster *****************

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 MySQL InnoDB Cluster (https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-innodb-cluster.html).

Important:

InnoDB Cluster does not provide support for MySQL NDB Cluster. For more information about MySQL NDB Cluster, see note mysql-cluster:: and note mysql-cluster-compared::.

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:

The following diagram shows an overview of how these technologies work together:

FIGURE GOES HERE: InnoDB Cluster overview

Being built on MySQL note Group Replication: group-replication, 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 note multi-primary: group-replication-multi-primary-mode. mode, where all instances are primaries.

You work with InnoDB Cluster using the AdminAPI (https://dev.mysql.com/doc/mysql-shell/8.0/en/admin-api-overview.html), 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.

To get started with InnoDB Cluster you need to download (https://dev.mysql.com/downloads/shell/) and install (https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html) MySQL Shell. You need some hosts with MySQL Server instances *note installed: installing, and you can also install (https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-installation.html) MySQL Router.

InnoDB Cluster supports MySQL Clone (https://dev.mysql.com/doc/refman/8.0/en/clone-plugin.html), 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 add an instance (https://dev.mysql.com/doc/mysql-shell/8.0/en/add-instances-cluster.html) to the cluster and it is automatically provisioned.

Similarly, InnoDB Cluster is tightly integrated with MySQL Router (https://dev.mysql.com/doc/mysql-router/8.0/en/), and you can use AdminAPI to work with (https://dev.mysql.com/doc/mysql-shell/8.0/en/registered-routers.html) them together. MySQL Router can automatically configure itself based on an InnoDB Cluster, in a process called bootstrapping (https://dev.mysql.com/doc/mysql-shell/8.0/en/admin-api-bootstrapping-router.html), 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 create MySQL Router users (https://dev.mysql.com/doc/mysql-shell/8.0/en/configuring-router-user.html) at the cluster level, to work with the MySQL Routers bootstrapped against the cluster, and so on.

AdminAPI is compatible with instances running MySQL 5.7, but with a reduced feature set. For more information, see Using Instances Running MySQL 5.7 (https://dev.mysql.com/doc/mysql-shell/8.0/en/using-version-5-7.html). For the best experience using AdminAPI and InnoDB Cluster *note upgrade: upgrading. to MySQL 8.0.

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 Connectors and APIs (https://dev.mysql.com/doc/index-connectors.html).

 File: manual.info.tmp, Node: mysql-cluster, Next: partitioning, Prev: mysql-innodb-cluster-introduction, Up: Top

21 MySQL NDB Cluster 7.5 and NDB Cluster 7.6 ********************************************

This chapter provides information about MySQL NDB Cluster, a high-availability, high-redundancy version of MySQL adapted for the distributed computing environment which enables running several computers with MySQL servers and other software in a cluster. This chapter also provides information specific to NDB Cluster 7.5 releases through 5.7.44-ndb-7.5.36 and NDB Cluster 7.6 releases through 5.7.44-ndb-7.6.34, both of which are previous General Availability (GA) releases still supported in production. The latest available releases of these are 5.7.44-ndb-7.5.36 and 5.7.44-ndb-7.6.33, respectively. A more recent NDB Cluster stable release series uses version 8.0 of the note 'NDB': mysql-cluster. storage engine (also known as note 'NDBCLUSTER': mysql-cluster.). NDB Cluster 8.0, now available as a General Availability (GA) release beginning with version 8.0.19, incorporates version 8.0 of the 'NDB' storage engine; see MySQL NDB Cluster 8.0 (https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster.html), for more information about NDB 8.0. NDB Cluster 8.4 (NDB 8.4.5), based on version 8.4 of the NDB storage engine, is also available as an LTS release. See What is New in MySQL NDB Cluster 8.4 (https://dev.mysql.com/doc/refman/8.4/en/mysql-cluster-what-is-new.html), for information about differences in NDB 8.4 as compared to earlier releases. Previous GA releases NDB Cluster 7.4 and NDB Cluster 7.3 incorporated 'NDB' versions 7.4 and 7.3, respectively. NDB 7.4 and older release series are no longer supported or maintained. Both NDB 8.0 and NDB 8.1 are supported in production, and are recommended for new deployments.

 File: manual.info.tmp, Node: mysql-cluster-general-info, Next: mysql-cluster-overview, Prev: mysql-cluster, Up: mysql-cluster