添加 MariaDB GTID 复制策略¶
在 Kilo 版本中,为 MySQL 5.6 及更高版本添加了全局事务 ID (GTID) 复制支持。MySQL 5.6 的等效版本 MariaDB 10 具有 GTID 的不同实现。通过创建类似的策略实现,我们可以为 MariaDB 10 数据存储获得 GTID 复制支持。
Launchpad 蓝图:https://blueprints.launchpad.net/trove/+spec/mariadb-gtid-replication
问题描述¶
为了创建 MariaDB 实例的副本,只能使用基于二进制日志的复制。GTID 复制作为 MySQL 5.6 的复制替代方案添加,但对于其等效版本 MariaDB 10 而言,它不可用。
提议的变更¶
我们需要创建 trove/trove/guestagent/strategies/replication/experimental/mariadb_gtid.py 以支持 MariaDB 的复制。
用于设置新的空从服务器并复制主服务器所有 binlog 从起始位置的 SQL 如下2
CHANGE MASTER TO master_host="%(host)s", master_port=%(port)s, \
master_user="%(user)s", master_password="%(password)s", \
master_use_gtid=current_pos;
START SLAVE;
默认情况下,新安装服务器的 GTID 位置为空,这使得从服务器从主服务器的 binlog 开始复制。3 SQL 查询中的 current_pos 携带该位置。
这与 MySQL 的操作1 差别不大,但现在进行重构可能不是最好的选择,因为它会给现有策略增加不必要的复杂性。
配置¶
无
数据库¶
无
公共 API¶
无
公共 API 安全¶
无
Python API¶
无
CLI (python-troveclient)¶
无
内部 API¶
无
Guest Agent¶
无
备选方案¶
不支持基于 GTID 的 MariaDB 复制。
Dashboard 影响 (UX)¶
无
升级影响¶
无
依赖项¶
无
测试¶
将添加集成测试以涵盖此功能。
文档影响¶
将添加解释此新添加功能的文档。
参考资料¶
附录¶
无