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

AAA Mysql与redis的主从复制原理

一 :Mysql主从复制

重要的两个日志文件:bin log 和 relay log

bin log:二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。

relay log:用来保存从节点I/O线程接受的bin log日志,作为中继日志存在

(1) 从节点执行 start salve,开启主从复制

(2) 主节点binlog 发送给从节点,从节点会将bin log追加到relay log后面,并保存bin log的位置,以便下次从这个位置开始获取后续的内容

(3)  relay log内容解析成sql,然后依次执行sql,实现数据同步

二 :主从复制的工作模式

异步复制

mysql默认复制模式,当主节点将数据写到binlog之后,并提交事务,就立即返回结果给客户端,并不关注更新bin log有没有同步到从节点

半同步复制

相对于异步复制,增加了等待从节点成功提交事务的逻辑,但是并不是等待所有从节点提交事务,而是只要有一个从节点提交事务,则返回客户端结果。

全同步

这就很好理解了,就是在半同步的基础上,增加了等待所有从节点都成功写入数据,才返回结果给客户端

三 :binlog 数据存储格式

binlog日志文件是二进制的,直接打开是乱码
1、statement格式
保存执行的sql语句,但是如果语句中有随机数,会造成主从同步数据不一致
2、row
每次操作保存受影响的行,以及怎么变化。但是会产生大量的日志,比较浪费存储空间

3、mixed
如果语句中没有随机数等,就保存sql语句,否则保存为row格式

四:Redis主从复制

第一步:申请同步请求

  • 从节点与主节点建立 TCP 连接,并正式请求同步数据,发送 PSYNC ? -1。
  • 主节点接收到请求后,向从节点回复 FULLRESYNC runid offset ,做好开始传输 RDB 数据的准备。

第二步: RDB 文件同步

  • 主节点执行 bgsave 命令,生成当前数据的快照—也就是 RDB 文件。
  • 主节点随后将这个 RDB 文件传输给从节点。
  • 从节点收到 RDB 文件后,开始加载到自己的数据库中。

第三步 : 复制缓存区命令同步

  • 之后,每当主节点有新的写命令,它都会立即传输给从节点并同时将新命令追加到复制缓冲区中。
  • 从节点持续接收并执行这些命令,确保与主节点的数据始终保持同步

参考文档:

https://zhuanlan.zhihu.com/p/686074142  彻底搞懂MySQL主从复制工作原理 2+3+3+4-腾讯云开发者社区-腾讯云


http://www.mrgr.cn/news/42541.html

相关文章:

  • 探索画中画视频剪辑:创意无限,轻松实现
  • vue3+vite@4+ts+elementplus创建项目详解
  • HTML详解
  • macos安装git并连接gitCode远程仓库
  • 创建实体类pojo实现Serializable接口
  • 全球最具影响力的思想家颜廷利在中国影响力地位
  • ubuntu * 表达的应用
  • I2C以及OLED屏幕的实际应用
  • 【C++】—— vector模拟实现
  • k8s-集群部署
  • 微智启yolo数据集划分工具免费分享下载
  • 腾讯云技术深度解析:从微服务到AI编程助手的应用实践
  • Spring框架:Spring Core、Spring AOP、Spring MVC、Spring Boot、Spring Cloud等组件的基本原理及使用
  • 神经网络分类任务
  • webGL入门(六)图形旋转
  • 快速点特征直方图 (FPFH) 描述符 和 点特征直方图 (PFH) 描述符 的差异
  • Redis篇(面试题 - 连环16炮)(持续更新迭代)
  • 数据链路层(以太网简介)
  • 24年最新大众点评数据
  • 【深度学习基础模型】回声状态网络(Echo State Networks, ESN)详细理解并附实现代码。