MySQL 8.0 参考手册  / 第十八章 组复制  / 18.1 组复制背景  /  18.1.5 组复制插件架构

18.1.5 组复制插件架构

MySQL Group Replication 是一个 MySQL 插件,它建立在现有的 MySQL 复制基础设施之上,利用了二进制日志、基于行的日志记录和全局事务标识符等功能。它集成了当前的 MySQL 框架,例如性能模式或插件和服务基础设施。下图展示了一个框图,描述了 MySQL Group Replication 的整体架构。

图 18.6 组复制插件框图

图后的文字描述了图表的内容。

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

Group Replication 插件架构的下一层是一组组件,当通知路由到它们时会做出反应。捕获组件负责跟踪与正在执行的事务相关的上下文。应用程序组件负责在数据库上执行远程事务。恢复组件管理分布式恢复,并负责通过选择捐赠者、管理追赶过程和对捐赠者失败做出反应来使加入组的服务器保持最新。

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

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