深入浅出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: 后台回复"技术群",加技术交流群
相关文章
- 【MySQL高级】MySql中常用工具及Mysql 日志
- MySQL Error number: MY-010939; Symbol: ER_FAILED_TO_GET_ABSOLUTE_PATH; SQLSTATE: HY000 报错 故障修复 远程处理
- 数据库深入浅出MySQL: 数据库访问之旅(访问mysql)
- 深入浅出:掌握DOS命令管理MySQL(dos命令mysql)
- MySQL: 强大的数据库应用程序(mysql应用程序)
- 基于VC连接MySQL实现数据库操作(vc连接mysql)
- 深入浅出MySQL学习之路(Mysql深入学习)
- 深入浅出:MySQL 链接技术(mysql链接)
- 深入浅出MySQL——图标带你轻松学习(mysql的图标)
- 深入浅出:MySQL存储过程语句实战指南(mysql存储过程语句)
- 深入浅出:MySQL数据库编码技巧(mysql数据库的编码)
- 使用MySQL进行空格替换的方法(mysql空格替换)
- 深入浅出MySQL数据表设计技巧(mysql数据表设计)
- 快速部署Mysql,让阿里云更智能(阿里云虚拟主机mysql)
- Mysql图形化界面:更快捷的数据库操控方式(mysql 图形化界面)
- 深入浅出:MySQL数据库完整指南,覆盖所有内容(mysql大全)
- 查询高效构建MySQL中的多表连接查询(mysql连表)
- 快速学习MySQL中remove的使用技巧(mysql中remove)
- MySQL中int数据类型最长长度(mysql中int最长)
- 深入浅出MySQL中BLOB字段的读取技巧(mysql中blob读取)
- MySQL怎么不卸载直接覆盖详细操作步骤(mysql不卸载直接覆盖)
- 深入浅出MySQL数据结构,让你了解数据库内部机制(mysql下的数据结构)
- 解决 MySQL 查询表问题的实用指南(mysql 不能查询表)