MySQL 8.3 Release Notes
MySQL 组复制是一个 MySQL 插件,它建立在现有的 MySQL 复制基础设施上,利用了二进制日志、基于行的日志记录和全局事务标识符等功能。它与当前的 MySQL 框架集成,如性能架构或插件和服务基础设施。下图显示了 MySQL 组复制的总体架构图。
MySQL 组复制插件包括一组用于捕获、应用和生命周期的 API,这些 API 控制插件如何与 MySQL 服务器交互。有接口使信息从服务器流向插件,反之亦然。这些接口将 MySQL 服务器核心与组复制插件隔离,并主要是事务执行管道中的钩子。在服务器到插件的一方向,有关于服务器启动、服务器恢复、服务器准备好接受连接和服务器即将提交事务的通知。在另一个方向,插件指示服务器执行操作,如提交或中止正在进行的事务,或者在中继日志中排队事务。
组复制插件架构的下一层是组件,它们在收到通知时做出反应。捕获组件负责跟踪与执行事务相关的上下文。应用程序组件负责在数据库上执行远程事务。恢复组件管理分布式恢复,并负责让加入组的服务器与最新状态保持同步,选择捐赠者,管理追赶过程并对捐赠者故障做出反应。
继续向下,复制协议模块包含特定的复制协议逻辑。它处理冲突检测,并接收和传播事务到组中。
组复制插件架构的最后两层是组通信系统(GCS)API 和基于 Paxos 的组通信引擎(XCom)。GCS API 是一个高级 API,它抽象了构建复制状态机所需的属性(见 第 20.1 节,“组复制背景”)。因此,它将消息层的实现与插件的其余上层分离。组通信引擎处理与复制组成员的通信。