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 是一个最终一致性的系统。

相关推荐
小白男神1 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
kybs19911 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
程序猿_极客1 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
于平安1 天前
MySQL-触发器
数据库·mysql
大猫和小黄1 天前
MySQL锁与MVCC深度解析
mysql·mvcc·
数据库小学妹1 天前
MySQL库存扣减实战:原子UPDATE、分桶方案与锁范围分析
数据库·后端·mysql
Linux-lucky1 天前
39-41-Linux学习之旅之redis缓存基础与NFS基础
linux·运维·mysql·ubuntu
于平安1 天前
MySQL-变量,流程控制与游标
数据库·mysql