mysql innodb cluster #1

Supports: focal eoan groovy
Add to new model

Description

MySQL InnoDB Cluster Charm deploys and manages the lifecycle of a MySQL InnoDB Cluster.


Overview

The mysql-innodb-cluster charm deploys a MySQL 8 InnoDB clustered database. It is used in conjunction with the mysql-router charm.

Important: The eoan series is the first series supported by the mysql-innodb-cluster and mysql-router charms. These charms replace the percona-cluster charm starting with the focal series.

Usage

The charm is intended for deploying a cluster (minimum of three nodes) and therefore does not deploy on a single unit.

Configuration

See file config.yaml for the full list of configuration options, along with their descriptions and default values.

Deployment

To deploy a three-node cluster:

juju deploy -n 3 mysql-innodb-cluster

The name of the cluster can be customized at deploy time:

juju deploy -n 3 mysql-innodb-cluster --config cluster-name myCluster

Add a relation to a MySQL 8 Router (via the db-router endpoint):

juju add-relation mysql-innodb-cluster:db-router msyql-router:db-router

A relation can be made to charms that use the shared-db endpoint, however this should be considered deprecated:

juju add-relation mysql-innodb-cluster:shared-db keystone:shared-db

Nodes can be added to the cluster as Read Only nodes:

juju add-unit mysql-innodb-cluster

See OpenStack high availability in the OpenStack Charms Deployment Guide for more deploy instructions.

TLS

TLS communication between MySQL InnoDB Cluster and its cloud clients is supported.

Due to the circular dependency between the vault and mysql-innodb-cluster applications, the enablement of this feature can only be done post-deployment (once vault has been initialised and has a root Certificate Authority).

Enable database TLS communication with this relation:

juju add-relation mysql-innodb-cluster:certificates vault:certificates

Actions

This section lists Juju actions supported by the charm. Actions allow specific operations to be performed on a per-unit basis. To display action descriptions run juju actions mysql-innodb-cluster. If the charm is not deployed then see file actions.yaml.

  • add-instance
  • cluster-rescan
  • cluster-status
  • mysqldump
  • reboot-cluster-from-complete-outage
  • rejoin-instance
  • remove-instance
  • restore-mysqldump
  • set-cluster-option

Bugs

Please report bugs on Launchpad.

For general charm questions refer to the OpenStack Charm Guide.


Configuration

action-managed-upgrade
(boolean) If True enables openstack upgrades for this charm via juju actions. You will still need to set openstack-origin to the new repository but instead of an upgrade running automatically across all units, it will wait for you to execute the openstack-upgrade action for this charm on each unit. If False it will revert to existing behavior of upgrading all units on config change.
auto-rejoin-tries
(string) The number of tries instances make to rejoin the cluster after being expelled.
1000
binlogs-expire-days
(int) Sets the expire_logs_days mysql configuration option, which will make mysql server automatically remove logs older than configured number of days.
10
binlogs-max-size
(string) Sets the max_binlog_size mysql configuration option, which will limit the size of the binary log files. The server will automatically rotate binlogs after they grow to be bigger than this value. Keep in mind that transactions are never split between binary logs, so therefore binary logs might get larger than configured value.
100M
binlogs-path
(string) Location on the filesystem where binlogs are going to be placed. Default mimics what mysql-common package would do for mysql. Make sure you do not put binlogs inside mysql datadir (/var/lib/mysql/)!
/var/log/mysql/mysql-bin.log
cluster-name
(string) Cluster name for the InnoDB cluster. Must be unique.
jujuCluster
enable-binlogs
(boolean) Turns on MySQL binary logs. The placement of the logs is controlled with the binlogs_path config option.
expel-timeout
(int) An integer value that specifies the period of time in seconds that cluster members should wait for a non-responding member before expelling it from the cluster. This value can be changed while Group Replication is running. Setting this value to N will mean that a member will be expelled after N + 5 seconds after the loss of connectivity. See the MySQL documentation related to the group_replication_member_expel_timeout option for more information. https://dev.mysql.com/doc/refman/8.0/en/group-replication-responses-failure-expel.html https://dev.mysql.com/doc/refman/8.0/en/group-replication-options.html#sysvar_group_replication_member_expel_timeout
5
innodb-buffer-pool-size
(string) By default this value will be set according to 50% of system total memory or 512MB (whichever is lowest) but also can be set to any specific value for the system. Supported suffixes include K/M/G/T. If suffixed with %, one will get that percentage of system total memory allocated.
innodb-change-buffering
(string) Configure whether InnoDB performs change buffering, an optimization that delays write operations to secondary indexes so that the I/O operations can be performed sequentially. . Permitted values include . none Do not buffer any operations. inserts Buffer insert operations. deletes Buffer delete marking operations; strictly speaking, the writes that mark index records for later deletion during a purge operation. changes Buffer inserts and delete-marking operations. purges Buffer the physical deletion operations that happen in the background. all The default. Buffer inserts, delete-marking operations, and purges. . For more details https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_change_bufferring
all
innodb-file-per-table
(boolean) Turns on innodb_file_per_table option, which will make MySQL put each InnoDB table into separate .idb file. Existing InnoDB tables will remain in ibdata1 file - full dump/import is needed to get rid of large ibdata1 file
True
innodb-io-capacity
(int) Configure the InnoDB IO capacity which sets an upper limit on I/O activity performed by InnoDB background tasks, such as flushing pages from the buffer pool and merging data from the change buffer. . This value typically defaults to 200 but can be increased on systems with fast bus-attached SSD based storage to help the server handle the background maintenance work associated with a high rate of row changes. . Alternatively it can be decreased to a minimum of 100 on systems with low speed 5400 or 7200 rpm spindles, to reduce the proportion of IO operations being used for background maintenance work. . For more details https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_io_capacity
200
max-connections
(int) Maximum connections to allow. A value of -1 means use the server's compiled-in default. This is not typically that useful so the charm will configure PXC with a default max-connections value of 600. Note: Connections take up memory resources. Either at startup time with performance-schema=True or during run time with performance-schema=False. This value is a balance between connection exhaustion and memory exhaustion. . Consult a MySQL memory calculator like http://www.mysqlcalculator.com/ to understand memory resources consumed by connections. See also performance-schema.
600
os-db-router-hostname
(string) The hostname or address of the db-router endpoint for mysql-innodb-cluster
prefer-ipv6
(boolean) If True enables IPv6 support. The charm will expect network interfaces to be configured with an IPv6 address. If set to False (default) IPv4 is expected. . NOTE: these charms do not currently support IPv6 privacy extension. In order for this charm to function correctly, the privacy extension must be disabled and a non-temporary address must be configured/available on your network interface.
snap_proxy
(string) DEPRECATED. Use snap-http-proxy and snap-https-proxy model configuration settings. HTTP/HTTPS web proxy for Snappy to use when accessing the snap store.
snap_proxy_url
(string) DEPRECATED. Use snap-store-proxy model configuration setting. The address of a Snap Store Proxy to use for snaps e.g. http://snap-proxy.example.com
snapd_refresh
(string) How often snapd handles updates for installed snaps. The default (an empty string) is 4x per day. Set to "max" to check once per month based on the charm deployment date. You may also set a custom string as described in the 'refresh.timer' section here: https://forum.snapcraft.io/t/system-options/87
source
(string) Repository from which to install. May be one of the following: distro (default), ppa:somecustom/ppa, a deb url sources entry, or a supported Ubuntu Cloud Archive e.g. . cloud:<series>-<openstack-release> cloud:<series>-<openstack-release>/updates cloud:<series>-<openstack-release>/staging cloud:<series>-<openstack-release>/proposed . See https://wiki.ubuntu.com/OpenStack/CloudArchive for info on which cloud archives are available and supported.
distro
ssl_ca
(string) TLS CA to use to communicate with other components in a deployment. . __NOTE__: This configuration option will take precedence over any certificates received over the ``certificates`` relation.
ssl_cert
(string) TLS certificate to install and use for any listening services. . __NOTE__: This configuration option will take precedence over any certificates received over the ``certificates`` relation.
ssl_key
(string) TLS key to use with certificate specified as ``ssl_cert``. . __NOTE__: This configuration option will take precedence over any certificates received over the ``certificates`` relation.
table-open-cache
(int) Sets table_open_cache (formerly known as table_cache) to mysql.
2048
tuning-level
(string) Valid values are 'safest', 'fast', and 'unsafe'. If set to 'safest', all settings are tuned to have maximum safety at the cost of performance. 'fast' will turn off most controls, but may lose data on crashes. 'unsafe' will turn off all protections but this may be OK in clustered deployments.
safest
wait-timeout
(int) The number of seconds the server waits for activity on a noninteractive connection before closing it. https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout
3600