---
title: Charmhub | Deploy Mysql Innodb Cluster using Charmhub - The Open Operator Collection
description: Deploy the latest version of Mysql Innodb Cluster on any cloud. MySQL
  InnoDB Cluster
url: https://charmhub.io/mysql-innodb-cluster
---

# Mysql Innodb Cluster

[OpenStack Charmers](https://charmhub.io/publisher/openstack-charmers "View all packages from OpenStack Charmers")

* [OpenStack Charmers](https://charmhub.io/publisher/openstack-charmers "View all packages from OpenStack Charmers")
* [Cloud](https://charmhub.io/?filter=cloud)
* [Databases](https://charmhub.io/?filter=databases)

Platform:

24.04

23.10

23.04

22.10

22.04

21.10

21.04

20.10

20.04

8.0/stable 6930e1d

```
juju deploy mysql-innodb-cluster --channel 8.0/stable
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

---

Share your thoughts on this charm with the community on discourse.

[Join the discussion](https://discourse.charmhub.io/)

# Overview

The mysql-innodb-cluster charm deploys a [MySQL 8](https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-userguide.html) InnoDB clustered database (i.e. MySQL InnoDB Cluster). It is used in conjunction with the [mysql-router](https://jaas.ai/mysql-router) subordinate 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](https://jaas.ai/percona-cluster) charm starting with the focal series.

**Important:** This documentation supports version `3.x` of the Juju client.
See the [OpenStack Charm
guide](https://docs.openstack.org/charm-guide/latest/project/support-notes.html#breaking-changes-between-juju-2-9-x-and-3-x) if you are using the `2.9.x` client.

# Usage

## Configuration

See file `config.yaml` of the built charm (or see the charm in the [Charm Store](https://jaas.ai/mysql-innodb-cluster)) for the full list of configuration options, along with their descriptions and default values. See the [Juju documentation](https://juju.is/docs/configuring-applications) for details on configuring applications.

## Deployment

MySQL 8 is natively HA and requires at least three database units, which are often containerised. To deploy a three-node cluster to new containers on machines ‘0’, ‘1’, and ‘2’:

```
juju deploy -n 3 --to lxd:0,lxd:1,lxd:2 mysql-innodb-cluster
```

A cloud application is joined to the database via an instance of mysql-router. For a pre-existing keystone application:

```
juju deploy mysql-router keystone-mysql-router
juju integrate keystone-mysql-router:db-router mysql-innodb-cluster:db-router
juju integrate keystone-mysql-router:shared-db keystone:shared-db
```

> **Important**: When network spaces are used, the mysql-router and mysql-innodb-cluster charms must be configured such that the ‘db-router’ endpoint is bound to the same space.

See [Infrastructure high availability](https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/app-ha.html#mysql-8) in the [OpenStack Charms Deployment Guide](https://docs.openstack.org/project-deploy-guide/charm-deployment-guide) for more deploy information.

## Root password

Passwords are automatically generated and stored by the application leader.

The root password required to use the `mysql` or `mysqlsh` utilities locally on the units can be retrieved using the following command:

```
juju exec --unit mysql-innodb-cluster/leader leader-get mysql.passwd
```

## TLS

TLS communication between MySQL InnoDB Cluster and its cloud clients is supported out of the box via a self-signed CA certificate bundled within MySQL itself. However, a better option is to use a certificate signed by a Vault-based CA. This can be done once Vault has been initialised and has a root CA:

```
juju integrate mysql-innodb-cluster:certificates vault:certificates
```

See the [vault](https://opendev.org/openstack/charm-vault/src/branch/master/src/README.md) charm README for more information.

## Adding a unit on a new subnet

When adding a unit to an already formed cluster, and where that unit resides on a subnet different from any existing unit, the following extra actions are needed:

```
juju run --wait mysql-innodb-cluster/leader update-unit-acls
juju run --wait mysql-innodb-cluster/leader add-instance address=<address of new unit>
```

## Actions

This section lists Juju [actions](https://jaas.ai/docs/actions) supported by the charm. Actions allow specific operations to be performed on a per-unit basis. To display action descriptions run `juju actions --schema 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`
* `update-unit-acls`

# Documentation

The OpenStack Charms project maintains two documentation guides:

* [OpenStack Charm Guide](https://docs.openstack.org/charm-guide): for project information, including development and support notes
* [OpenStack Charms Deployment Guide](https://docs.openstack.org/project-deploy-guide/charm-deployment-guide): for charm usage information

# Bugs

Please report bugs on [Launchpad](https://bugs.launchpad.net/charm-mysql-innodb-cluster/+filebug).

---

[Help improve this document in the forum](https://discourse.charmhub.io/t/mysql-innodb-cluster-docs-index/11009) ([guidelines](https://discourse.charmhub.io/t/how-to-write-docs-our-documentation-guidelines-for-contributors/1245)). Last updated 3 years ago.
