编辑
2024-03-15
数据库
00
请注意,本文编写于 65 天前,最后修改于 65 天前,其中某些信息可能已经过时。

目录

原理
作用
主从延迟
复制模式

原理

  1. 主库的更新事件(update、insert、delete)会按照顺序写入binlog日志中,当从库连接到主库时,主库会为从库开启binlog dump线程,该线程会去读取binlog日志

  1. 从库会生成两个线程:I/O线程和SQL线程。I/O线程通过请求binlog dump读取binlog日志,然后写入relay log中继日志中。

  1. SQL线程会实时监控 relay-log中继日志内容是否有更新,当中继日志有更新时,解析文件中的SQL语句,在从数据库中执行,从而实现主从复制

image.png


作用

  1. 提高数据库的吞吐量
  2. 读写分离
  3. 数据备份
  4. 具有高可用性

主从延迟

数据库的主从延迟是指在主从数据库复制过程中,从服务器上的数据与主服务器上的数据之间存在的时间差或延迟。一般来说导致主从延迟可能由多种因素引起,以下是一些常见的原因:

  1. 网络延迟:主节点和从节点之间的网络延迟导致复制延迟这是比较常见的一种情况,

  1. 从节点性能问题:从服务器的性能不足也可能导致复制延迟。如果从服务器的硬件资源(CPU、内存、磁盘)不足以处理接收到的复制事件,延迟可能会增加。

  1. 复制线程不够:当从节点只有一个线程,或者线程数不够的时候,数据回放就会慢,就会导致主从节点的数据延迟。

解决方式

  1. 优化网络:确保主节点和从节点之间的网络连接稳定,尽量同城或者同单元部署,减小网络延迟。

  1. 提高从服务器性能:增加从服务器的硬件资源,如CPU、内存和磁盘,以提高其性能,从而更快地处理复制事件。

  1. 优化SQL,避免慢SQL, 减少批量操作

复制模式

  • 异步复制

    MySQL异步复制是主从复制过程中默认的复制模式。因为是异步复制,所以master事务的提交,不需要经过slave的确认,即master I/O线程提交事务后,不需要等待slave I/O线程的回复确认,master并不保证binlog一定写入到了relay log中


  • 半同步复制

    基于传统异步存在的缺陷,mysql在5.5版本推出半同步复制,是对传统异步复制的改进。在master事务commit前,必须确保binlog日志已经写入slave 的relay log日志中,收到slave给master的响应后,才能进行事务的commit。但是后半部分的relay log到sql线程仍然属于异步执行。


  • 组复制

    引入组复制,主要是为了解决传统异步复制和半同步复制可能产生数据不一致的问题。组复制依靠分布式一致性协议(Paxos协议的变体),实现了分布式下数据的最终一致性,提供了真正的数据高可用方案

本文作者:春天y

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!