17.9.1 组复制插件体系结构

MySQL Group Replication 是一个 MySQL 插件,它基于现有的 MySQL 复制基础结构,利用了二进制日志,基于行的日志记录和全局事务标识符等功能。它与当前的 MySQL 框架集成,例如性能模式或插件和服务基础结构。下图提供了一个框图,描述了 MySQL 组复制的总体体系结构。

图 17.9 组复制插件框图

图后的 Literals 描述了图的内容。

MySQL 组复制插件包括一组用于捕获,应用和生命周期的 API,这些 API 控制插件如何与 MySQL Server 交互。有一些接口可以使信息从服务器流向插件,反之亦然。这些接口将 MySQL Server 核心与组复制插件隔离开,并且大多数是放置在事务执行管道中的钩子。在一个方向上,从服务器到插件,会有事件通知,例如服务器启动,服务器恢复,服务器准备接受连接以及服务器即将提交事务。在另一个方向上,插件指示服务器执行操作,例如提交或中止正在进行的事务,或在中继日志中对事务进行排队。

组复制插件体系结构的下一层是一组组件,这些组件在将通知路由到它们时会做出反应。捕获组件负责跟踪与正在执行的事务相关的上下文。应用程序组件负责在数据库上执行远程事务。恢复组件 Management 分布式恢复,并负责通过选择捐赠者,安排追赶程序并应对捐赠者失败来使正在加入该组的服务器保持最新状态。

continue 堆栈,复制协议模块包含复制协议的特定逻辑。它处理冲突检测,并接收事务并将其传播到该组。

组复制插件体系结构的最后两层是组通信系统(GCS)API,以及基于 Paxos 的组通信引擎(XCom)的实现。 GCS API 是一个高级 API,它抽象了构建复制状态机所需的属性(请参见第 17.1 节“组复制背景”)。因此,它将消息传递层的实现与插件的其余较高层分离。组通信引擎处理与复制组成员的通信。