Merge "MySQL 8 InnoDB Cluster and MySQL Router"

This commit is contained in:
Zuul 2019-10-16 14:14:03 +00:00 committed by Gerrit Code Review
commit 2426d1435e
1 changed files with 174 additions and 0 deletions

View File

@ -0,0 +1,174 @@
..
Copyright 2019 Canonical Ltd.
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
..
This template should be in ReSTructured text. Please do not delete
any of the sections in this template. If you have nothing to say
for a whole section, just write: "None". For help with syntax, see
http://sphinx-doc.org/rest.html To test out your formatting, see
http://www.tele3.cz/jbar/rest/rest.html
=======
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.
.. code-block:: bash
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