MySQL高可用方案从入门到精通

主从复制机制:

Mysql主从复制的用途

  • 实施灾备,用于故障切换
  • 读写分离用于查询服务
  • 备份,避免数据丢失

Mysql主从复制的条件

  • 主库开启binlog日志(从库需要从这里面读取)
  • 主从的Mysql server-id需要不同
  • 从库服务器能连通主库

异步复制:

         在MySQL 5.5以前,MySQL的复制是异步操作,主库和从库存在着数据延迟,这可能会导致一个问题:主库在事务提交后,从库在尚未得到日志内容时,主库因故障导致日志文件损坏或丢失,此时从库就无法完成数据的同步导致主从数据的不一致。

为了解决这个问题,MySQL 5.5引入了半同步复制机制。

对于异步复制流程,主库在执行完事务提交的操作后就立刻将执行结果返回给客户端,无需等待日志传送给从库后再返回。

同步复制:

         MASTER提交事务,直到事务在所有的SLAVE都已提交,此时才会返回客户端,事务执行完毕,完成一个事务可能会有很大的延迟。

半同步复制:

而对于半同步复制,为了保证每个事务都能够完好无损地同步到从库,主库在事务提交后并不会马上将执行结果返回给客户端,而是先将日志推送给从库后才将执行结果返回给客户端。这样也就保证了这个事务在两个日志文件中都有记录。

在半同步复制过程中,如果主库在提交事务、将事务内容写入日志中的过程发生了宕机,则事务并不会提交成功,两个日志都不会存在该事务的记录,所以也就保证了数据的一致。

如果从库发生了故障,那么主库会在事务提交后等待一段时间(时间长短可自行配置),如果在等待时间内从库依然没有响应,那么主库会自动切换为异步模式,并返回客户端事务成功提交的结果。

半同步复制工作机制处于同步和异步之间,MASTER的事务提交阻塞,只要一个SLAVE已收到该事务的事件且已记录,他不会等待所有的SLAVE都告知已收到,且他只是接收,并不用等其他执行且提交。

原文地址:https://www.cnblogs.com/linuxws/p/13524607.html