8.事务在 Group Replication 中的处理流程

事务在 Group Replication 中的处理流程

事务处理流程详解

事务在 Group Replication 中的处理流程:

  1. 事务发起阶段

    • 事务在 node1 上发起
    • COMMIT 之前的所有操作都不会和其它节点交互
    • 多主模式下,Group Replication 使用的是乐观事务模型
  2. 提交阶段

    • 客户端发起 COMMIT 操作
    • 事务开始执行提交操作
  3. Binlog 处理阶段

    • 事务在生成 Binlog Cache 之后,写入 Binlog 之前,开始进入 Group Replication 的处理流程
  4. 消息传播阶段

    • Group Replication 会打包事务的相关信息,并通过 GCS 发送
    • GCS 是 Group Replication 的消息通信层,具体实现是 XCom
    • XCom 是基于 Paxos 实现的组通信引擎
  5. 冲突检测阶段

    • 当消息被大多数节点(包括自己)确认接受后,开始进行冲突检测
    • 每个节点都维护了一个冲突检测数据库,各个节点的冲突检测都是独立进行的
  6. 冲突检测结果处理

    • 如果没有通过冲突检测(冲突检测失败),则回滚事务
    • 如果通过了冲突检测,则提交事务
  7. 事务提交执行

    • 对于本地事务:直接写 Binlog 提交,然后反馈给客户端
    • 对于远程事务 :将 Binlog Event 写入到 Relay Log 中,再由 group_replication_applier 通道重放 Relay Log 中的事务

一致性说明

事务在传播阶段(基于 Paxos 协议)是强一致的,但在应用阶段(重放 Relay Log 中的事务)又是异步的,这也就是为什么说 MGR 是一个最终一致性的系统。

相关推荐
这个DBA有点耶12 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
九皇叔叔1 天前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
愤怒的苹果ext1 天前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
超兔一体云1 天前
MySQL索引优化实战——从慢查询到索引调优
后端·mysql
2601_962074811 天前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
2601_962073811 天前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql
这个DBA有点耶2 天前
SQL:2023新特性详解:JSON_TABLE、GREATEST/LEAST、QUALIFY 到底怎么用?
数据库·sql·mysql
小王C语言2 天前
MySQL 用户管理:创建用户、给用户授权
数据库·mysql
小镇敲码人2 天前
【深入浅出】之Qt 事件系统实战:鼠标、键盘、滚轮、窗口与定时器事件
数据库·qt·网络协议·mysql·http
Sirens.2 天前
MySQL数据库:索引
数据库·mysql