Specification for the support addition for MariaDB in Trove Change-Id: I93e19e7567d7e9376dd45d69c79cff0e053d0ed4 Related: blueprint mariadb-datastore-support
4.9 KiB
MariaDB Datastore Support
MariaDB1 is a community-developed fork of MySQL licensed under GNU GPL.
It aims to maintain high compatibility with MySQL, ensuring a "drop-in" replacement capability with library binary equivalency and exact matching with MySQL APIs and commands.
https://blueprints.launchpad.net/trove/+spec/mariadb-datastore-support
Problem Description
MariaDB versioning follow the MySQL's versioning scheme up to version 5.5. Thus, MariaDB 5.5 offers all of the MySQL 5.5 features. After the 5.5 version, MariaDB developers decided to start a branch numbered 10, as an attempt to make it clear that specific new features have been developed in MariaDB 10 that are not included in MySQL 5.6.
Currently, Trove has support for MySQL but not for MariaDB in particular. This could be easily fixed for MariaDB 5.5 by just adapting the main configuration file (my.cnf). But in the case of MariaDB 10, this will no-longer be so straightforward.
With this in mind, and the fact that several GNU/Linux distributions are adopting MariaDB as the default MySQL implementation, it seems important to add support for this datastore.
Proposed Change
To add support for this datastore, we will need the following:
- Implement instance management for the datastore:
- Launch new instance
- Terminate instance
- Reboot instance
- Resize instance
- Implement user and database management for the datastore:
- CRUD users
- CRUD databases
- Add new elements in trove-integration project to enable the creation of Ubuntu/Fedora images with MariaDB
In this first approach, it makes sense to take profit of the MySQL Refactor spec2 and inherit as much as possible from the MySQL implementation, providing a cleaner way to launch MariaDB 5.5 instances.
In a follow up spec, differences in implementation will be tackled (e.g. a GTID based replication strategy3 for MariaDB 10 will be proposed) and we would be able to provide support for MariaDB newer versions.
Configuration
A new configuration group for MariaDB and the different configuration options specific to MariaDB have to be added to trove/common/cfg.py
Some of the examples for the configuration options are:
- tcp_ports
- udp_ports
- backup_strategy
- backup_incremental_strategy
- replication_strategy
- mount_point
- volume_support
- device_path
- backup_namespace
- restore_namespace
Database
None
Public API
None
Public API Security
None
Python API
None
CLI (python-troveclient)
None
Internal API
None
Guest Agent
- This requires implementing the various datastore features for MariaDB like Launch, Reboot, Terminate and Resize.
- This requires implementing the various CRUD features for users and databases for MariaDB.
- This will include adding the following files specific to MariaDB under the guestagent/datastore module:
- manager.py
- service.py
These changes will not affect the behavior of the guestagent or its interaction with other components.
Alternatives
Do not support MariaDB.
Implementation
Assignee(s)
- Primary assignee:
-
- vkmc
Milestones
Liberty-3
Work Items
- Update trove-integration to support MariaDB image creation
- Create MariaDB elements for Ubuntu/Fedora
- Update trove/common/cfg.py with the configuration options for MariaDB
- Add MariaDB configuration templates under templates/mariadb
- Add support for instance management features in guestagent/experimental/mariadb/service.py [*]
- Add support for user and databases management features in guestagent/experimental/mariadb/service.py [*]
- Add unit and integration tests specific to MariaDB
[*] This items rely on the MySQL Manager Refactor spec4 and in the first iteration it will only require inheriting from the MySQL existing implementation.
Upgrade Implications
None
Dependencies
MySQL Manager Refactor5
Testing
- Unit tests will be added for MariaDB guestagent
- Integration tests will be added for end-to-end feature testing
- Create/Delete MariaDB instances
- Resize MariaDB instances
Documentation Impact
- Docs will be updated to indicate that:
- Which MariaDB version is supported
- Trove capabilities for MariaDB datastore
- Instructions to build guest MariaDB images using trove-integration elements