深入浅出MySQL复制--MySQL的"核心科技"
前言
MySQL复制是MySQL成功的最重要原因之一,前东家某公司内网上有相关资料,低下评论戏称"核心科技",今天将核心科技分享给大家
一 MySQL复制简介
复制:从一个MySQL数据库实例(称为源端)复制到一个或多个MySQL数据库实例(称为副本,或者目标端) 复制方式:异步复制、半同步复制、组复制 范围:所有数据库、选定的数据库、选定的表 过程:
1、在主库上把数据更改事件记录到二进制日志中
2、从库上的I/O线程向主库请求二进制日志中的事件
3、主库上的binlog dump线程向I/O线程发送二进制事件
4、从库上的I/O线程将二进制日志事件复制到自己的中继日志中
5、从库上的SQL线程读取中继日志中的事件,并将其重放到从库上
图1 MySQL复制示意图
解决方案:扩展读负载、提供高可用性、地理冗余(同城双活、异地备份)、备份、提供分析业务
图2 MySQL复制提供解决方案
二 复制发展历史
三 复制种类
1 传统复制(异步复制)
图3 传统复制示意图
传统复制是主库直接将二进制文件发送给从库,不关注从库的后续操作;
2 半同步复制
图4 半同步复制示意图
半同步复制是主库等待从库反馈信息后再提交事务,有after_sync和after_commit两种模式;
图5 半同步复制FATER_COMMIT流程图
Master的数据写入了binlog,slave 刷新到磁盘(relay log),同时master需要等待slave 反馈收到relay log,只有收到ACK后master才将commit OK结果反馈给客户端;
图6 半同步复制AFTER_SYNC流程图
AFTER_SYNC模式下,事务是在提交之前发送给Slave,当Slave没有接收成功,并且如果发生Master宕机的场景,不会导致主从不一致,因为此时Master端还没有提交,所以主从都没有数据,这样就能够满足数据完整性和一致性了。
3 组复制(强一致)
组复制是节点间通过GCS(Group Communication System)进行交互。
四 半同步复制并行优化过程
单线程复制-->5.6版本Schema级别的并行复制-->5.7版本 基于Group Commit的并行复制、LOGICAL_CLOCK并行复制-->8.0 版本基于WriteSet的并行复制
五 参考文章来源
1、GreatSQL社区--《组复制技术架构 | 深入浅出MGR》https://greatsql.cn/blog-10-4.html 2、杨建荣的学习笔记--《MySQL半同步复制》https://cloud.tencent.com/developer/article/1426830?areaSource=&traceId= 3、阿里内核月报--《MySQL · 特性分析 · 8.0 WriteSet 并行复》http://mysql.taobao.org/monthly/2018/06/04/
ps: 后台回复"技术群",加技术交流群
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地