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