当前位置: 首页 > news >正文

MYSQL备库的并行复制

备库在消费中转日志时,其实可以分多个线程同时对多个事务进行消费,但是要满足2个基本原则:

1.涉及同一行数据的多个事务必须在同一个线程中执行,否则会导致数据不一致

2.同一个事务不能被拆开

MYSQL 5.6的并行复制策略(按库并行)

不同的worker执行不同的库上的事务

如果多个库的压力均衡,那效果就还可以。

MariaDB 的并行复制策略(模拟主库的并行模式)

MariaDB的思路是:

1.能在同一组(组提交)提交的事务,一定不会修改同一行

2.主库上可以并行执行的事务,在备库上也一定可以并行执行。

在实现上:

在一组里面提交的事务,有个共同的commit_id。

把commit_id写到binlog里面

在备库分发任务的时候,相同的commit_id就可以分到多个不同的线程并发执行。

这一组事务全部执行完成后,再取下一组。

MYSQL 5.7 的并行复制策略

参数slave-parallel-type,如果参数值为DATABASE,那就是MYSQL5.6的并行策略。

参数值是 LOGICAL_CLOCK,那就是类似于MariaDB的策略。

在主库“同时执行”的策略,在从库是可以同时执行的吗,不能的,因为主库同时执行时还有锁机制来控制各个事务的先后顺序。

MariaDB的策略其实是:同时处于commit状态的事务可以并行执行???

实际上,同时处于prepara阶段的事务就可以并行执行了,因为这时事务就已经执行完了。

而且,在prepara阶段的事务和处于commit状态的事务之间,在备库上也是可以并行执行的。

MYSQL 5.7.22 的并行复制策略

binlog-transaction-dependency-tracking 参数选择三种策略

1.根据多个事务是否在prepara阶段的事务和处于commit状态的事务之间

2.对于每一行计算出hash,如果2个事务的所更改的行的集合没有交集,就是可以并行的

3.在第二种的基础上加了一个约束:在主库中同一个线程先后执行的事务,在从库也要保持先后关系

http://www.lryc.cn/news/478486.html

相关文章:

  • 体感游戏开发:参考资料
  • Diving into the STM32 HAL-----Clock Tree笔记
  • 【AIGC】如何充分利用ChatGPT:有效提示框架与基本规则
  • 【1个月速成Java】基于Android平台开发个人记账app学习日记——第7天,申请阿里云SMS短信服务SDK
  • 视频怎么去除杂音保留人声?教你如何实现视频降噪
  • 数学建模学习(136):使用Python基于Fuzzy WSM、Fuzzy WPM、Fuzzy WASPAS的多准则决策分析
  • Python小游戏21——拼图小游戏
  • C# 常用的测试框架合集
  • Android——从相机/相册获取图片
  • MySQL 数据库基准测试报告
  • 计算机毕业设计Python+大模型神经网络电影推荐 知识图谱图神经网络电影推荐可视化系统 注意力机制 秒杀同类电影推荐项目 GNN GAT
  • Python | Leetcode Python题解之第543题二叉树的直径
  • 【浪潮商城-注册安全分析报告-无验证方式导致安全隐患】
  • 如何设置VSCODE快捷键光标移到行首和行尾
  • Android——多线程、线程通信、handler机制
  • Java | Leetcode Java题解之第542题01矩阵
  • docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法
  • CSS3新增渐变(线性渐变、径向渐变、重复渐变)
  • 汽车免拆诊断案例 | 2017款凯迪拉克XT5车组合仪表上的指针均失灵
  • Cloudera Hue深度解析:安装、配置到高级用法
  • 17、论文阅读:VMamba:视觉状态空间模型
  • GPT-5 一年后发布?对此你有何期待?
  • 2024中国国际数字经济博览会:图为科技携明星产品引领数智化潮流
  • 大模型面试题:常见的微调方法有哪些说下原理并对比
  • CentOS 9 Stream 上安装 PostgreSQL 16
  • 【数据分享】1901-2023年我国省市县镇四级的逐年最高气温数据(免费获取/Shp/Excel格式)
  • 使用C++和QT开发应用程序入门以及开发实例分享
  • Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
  • qt QStandardItemModel详解
  • 光伏设计软件如何快速上手?