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·分类
五阿哥永琪3 小时前
MySQL 慢查询定位与 SQL 性能优化实战指南
sql·mysql·性能优化
xiaok6 小时前
GROUP BY进阶用法
mysql
李慕婉学姐6 小时前
【开题答辩过程】以《基于Android的健康助手APP的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
android·java·mysql
qq_12498707536 小时前
基于springboot健康养老APP的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·微信小程序·毕业设计
亚林瓜子7 小时前
mysql命令行手动导入csv数据到指定表
数据库·mysql·gui·csv·cli·db·import
一分半心动7 小时前
lnmp架构 mysql数据库Cannot assign requested address报错解决
linux·mysql·php
ChristXlx7 小时前
Linux安装mysql(虚拟机适用)
linux·mysql
瀚高PG实验室8 小时前
timestampdiff (MYSQL)函数在Highgo DB中的写法
数据库·mysql·瀚高数据库
还是鼠鼠9 小时前
SQL语句执行很慢,如何分析呢?
java·数据库·mysql·面试