MySQL 8¶
Introduce charmed and enterprise grade MySQL 8 + InnoDB + MySQL Router as a database solution for OpenStack models with the intention of making it the default as of Ubuntu 20.04.
Problem Description¶
Percona XtraDB Cluster is in Universe, has failed a Main Inclusion Request process, and will not be carried into the next LTS relative to Charmed OpenStack deployments.
Proposed Change¶
These will be wholly new charms, not based in any way on existing MySQL or Percona-Cluster charms, and without a charm upgrade path.
Instead of in-place upgrades a migration solution will be provided to allow existing Ubuntu 18.04 LTS deployments using the percona-cluster charm to migrate databases directly to an Ubuntu 20.04 LTS deployment based on mysql-innodb-cluster. Full details will be provided as an update to this spec.
The charms will be promulgated to the following locations:
cs:mysql-innodb-cluster
cs:mysql-router
What versions of the operating system are affected or required? 19.10 (Eoan) and 20.04
What versions of OpenStack are affected or required? Train and above
What version of Juju is required? Juju 2.7+
Alternatives¶
The alternative is to bring percona-cluster into main for 20.04.
Implementation¶
Assignee(s)¶
- Primary assignee:
thedac
Gerrit Topic¶
Use Gerrit topic “mysql8” for all patches related to this spec.
git-review -t mysql8
Work Items¶
The implementation consists of the following charms:
mysql-innodb-cluster
The primary charm that will handle the mysql implementation.
Install MySQL 8
Handle InnoDB clustering
interface-mysql-innodb-cluster
The peer relationship for mysql-innodb-cluster
interface-mysql-shared provides
The interface mysql-shared provides side
mysql-router
The subordinate charm that will relate to the application charm and to mysql-innodb-cluster.
Proxies DB requests and responses
interface-mysql-router
The interface between the application and mysql-router
mysqlsh snap
The mysqlsh tool that manages the mysql innodb cluster
snapped from upstream source
Repositories¶
charm-mysql-innodb-cluster
charm-interface-mysql-innodb-cluster
charm-mysql-router
charm-interface-mysql-router
mysqlsh-snap
Documentation¶
Each charm and interface will contain a README with instructions on deploying and relating the charm.
Potentially an OpenStack deployment guide appendix to discuss clustering and cluster management.
Security¶
MySQL 8 will now be in main with security auditing which percona-cluster never had.
The code reviews of the work items should include a security conscious review approach.
Testing¶
Unit tests for each repository.
Zaza functional tests for each charm. This will include end to end testing with applications, mysql-router and mysql-inndob-cluster.
Dependencies¶
Eoan+ mysql8 packaging
MySQL shell