组复制插件架构
MySQL MGR是一个MySQL插件,构建在现有MySQL复制基础架构上。MGR插件包括一组用于Capture、Apply和Lifecycle的API,用于控制插件如何与MySQL服务器进行交互。通过接口可以让信息在服务器和插件之间流转,而且这些接口将MySQL服务器核心从组复制插件隔离出来。从服务器到插件这个方向,会有如服务器启动、服务器恢复、服务器准备接受连接和服务器即将提交事务的事件的通知,而在另一个方向,即插件到服务器这个方向,插件指示服务器执行如提交或终止正在进行的事务,或在Relaylog中对事务排队这样的操作。
再往下一层是一组组件,包括Capture、Applier和Recovery,当通知路由到这些组件时会做出相应的响应。其中,Capture组件负责追踪正在执行事务的上下文信息,Applier组件负责在数据库上执行远程事务,Recover组件管理分布式恢复。
继续往下看,复制协议模块包含复制协议的特定逻辑,它处理冲突检测,接收事务并将其传播到组。
最后两层是组通信系统(GCS)API,以及基于Paxos的组通信引擎的实现。