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

相关推荐
做个文艺程序员27 分钟前
深入 MySQL 内核:MVCC、Buffer Pool 与高并发场景下的极限调优
数据库·mysql·adb
数厘1 小时前
2.4MySQL安装配置指南(电商数据分析专用)
数据库·mysql·数据分析
一江寒逸1 小时前
零基础从入门到精通MySQL(下篇):精通篇——吃透索引底层、锁机制与性能优化,成为MySQL实战高手
数据库·mysql·性能优化
爱码小白2 小时前
数据库多表命名的通用规范
数据库·python·mysql
一只大袋鼠4 小时前
MySQL 事务从入门到精通(上):概念、操作、特性、隔离级别全解析
java·mysql·事务
川trans4 小时前
基于 Docker & K8s 的 MySQL 容器化部署与应用关联实践
mysql·docker·kubernetes
刘~浪地球5 小时前
数据库与缓存--MySQL 高可用架构设计
数据库·mysql·缓存
运维老郭5 小时前
MySQL 主从延迟根因诊断法:从现象到本质的全链路排查指南
运维·mysql
Wyawsl6 小时前
Python操作MySQL数据库
数据库·python·mysql
数厘6 小时前
2.3MySQL 表结构设计:提升 SQL 查询性能的关键
android·sql·mysql