MySQL 主从复制模式

MySQL 主从复制默认是异步的模式。

MySQL增删改操作会全部记录在binary log中,当slave节点连接master时,会主动从master处获取最新的bin log文件。并把bin log中的sql relay。

l 异步模式(mysql async-mode)

异步模式如下图所示,这种模式下,主节点不会主动push bin log到从节点,这样有可能导致failover的情况下,也许从节点没有即时地将最新的bin log同步到本地。

l 半同步模式(mysql semi-sync)

这种模式下主节点只需要接收到其中一台从节点的返回信息,就会commit;否则需要等待直到超时时间然后切换成异步模式再提交;这样做的目的可以使主从数据库的数据延迟缩小,可以提高数据安全性,确保了事务提交后,binlog至少传输到了一个从节点上,不能保证从节点将此事务更新到db中。性能上会有一定的降低,响应时间会变长。如下图所示:

l 全同步模式

全同步模式是指主节点和从节点全部执行了commit并确认才会向客户端返回成功。

 

同步的原理(参考)

  1. 当主库数据发生变更时,写入本地Bin Log文件
  2. 从库IO线程发起dump主库Bin Log文件的请求
  3. 主库IO线程推送Bin Log文件到从库中
  4. 从库IO线程把Bin Log内容写入本地的Relay Log文件中
  5. 从库SQL线程读取Relay Log文件内容
  6. 从库SQL线程重新执行一遍SQL语句

 

 

posted @ 2023-08-03 12:12  海和风  阅读(44)  评论(0)    收藏  举报