MariaDB 数据存储支持¶
MariaDB 1 是一个基于 GNU GPL 许可协议的 MySQL 社区开发的衍生版本。
它的目标是保持与 MySQL 的高度兼容性,确保能够作为“即插即用”的替代品,具有库二进制等效性以及与 MySQL API 和命令的精确匹配。
https://blueprints.launchpad.net/trove/+spec/mariadb-datastore-support
问题描述¶
MariaDB 的版本控制遵循 MySQL 的版本控制方案,直到版本 5.5。因此,MariaDB 5.5 提供了 MySQL 5.5 的所有功能。在 5.5 版本之后,MariaDB 开发者决定启动一个编号为 10 的分支,试图明确 MariaDB 10 中开发的新功能不包含在 MySQL 5.6 中。
目前,Trove 支持 MySQL,但并不特别支持 MariaDB。通过调整主配置文件 (my.cnf) 可以轻松地解决 MariaDB 5.5 的问题。但对于 MariaDB 10 来说,情况将不再如此简单。
考虑到这一点,以及许多 GNU/Linux 发行版正在采用 MariaDB 作为默认的 MySQL 实现,因此增加对这种数据存储的支持似乎很重要。
提议的变更¶
为了增加对这种数据存储的支持,我们需要以下内容
实现数据存储的实例管理
启动新实例
终止实例
重启实例
调整实例大小
实现数据存储的用户和数据库管理
CRUD 用户
CRUD 数据库
在 trove-integration 项目中添加新的元素,以启用使用 MariaDB 创建 Ubuntu/Fedora 镜像
在第一次尝试中,利用 MySQL 重构规范 2 并尽可能从 MySQL 实现继承,提供一种更简洁的方式来启动 MariaDB 5.5 实例,这是有意义的。
在后续规范中,将解决实现差异(例如,将提出基于 GTID 的复制策略 3 用于 MariaDB 10),并能够为较新版本的 MariaDB 提供支持。
配置¶
必须在 trove/common/cfg.py 中添加一个新的 MariaDB 配置组以及 MariaDB 特定的不同配置选项。
配置选项的一些示例是
tcp_ports
udp_ports
backup_strategy
backup_incremental_strategy
replication_strategy
mount_point
volume_support
device_path
backup_namespace
restore_namespace
数据库¶
无
公共 API¶
无
公共 API 安全¶
无
Python API¶
无
CLI (python-troveclient)¶
无
内部 API¶
无
Guest Agent¶
这需要为 MariaDB 实现各种数据存储功能,例如启动、重启、终止和调整大小。
这需要为 MariaDB 实现各种 CRUD 功能,用于用户和数据库。
这将在 guestagent/datastore 模块下添加以下特定于 MariaDB 的文件
manager.py
service.py
这些更改不会影响 guestagent 的行为或其与其他组件的交互。
备选方案¶
不支持 MariaDB。
实现¶
负责人¶
- 主要负责人
vkmc
里程碑¶
Liberty-3
工作项¶
更新 trove-integration 以支持 MariaDB 镜像创建
为 Ubuntu/Fedora 创建 MariaDB 元素
使用 MariaDB 的配置选项更新 trove/common/cfg.py
在 templates/mariadb 下添加 MariaDB 配置模板
在 guestagent/experimental/mariadb/service.py 中添加对实例管理功能的支持 [*]
在 guestagent/experimental/mariadb/service.py 中添加对用户和数据库管理功能的支持 [*]
添加特定于 MariaDB 的单元测试和集成测试
[*] 这些项目依赖于 MySQL Manager 重构规范 2,并且在第一次迭代中,只需要从现有的 MySQL 实现继承即可。
升级影响¶
无
文档影响¶
将更新文档,以指示
支持的 MariaDB 版本
Trove 对 MariaDB 数据存储的功能
使用 trove-integration 元素构建 guest MariaDB 镜像的说明