MySQL 主从同步是 MySQL 集群方案中的一种,也是实现难度最低的一种。
然而,现在的面试都不问 MySQL 主从同步原理了,而是开始问主从同步怎么保证数据一致性问题了。
所以,今天就给大家安排上了。
数据一致性是指在一个系统中,数据在不同的部分、不同的时间点,以及不同的操作之间保持一致的状态。
数据一致性通常体现在以下几点:
MySQL 主从复制是一种将 MySQL 主数据库的数据,同步到其他的数据库的一种机制,从而实现数据的冗余备份和负载均衡,平行扩展了数据库的查询能力。
主从数据库基本概念:
MySQL 主从复制流程如下:
它的主要执行流程如下:
MySQL 主从同步方式有以下三种:
异步复制默认的主从同步复制模式,在这种模式下, 主服务器提交事务后立即返回客户端,无需等待从服务器确认是否成功接收并应用了事务 ,从服务器会在后台独立地接收并应用事务日志。
异步同步流程如下(红色部分为主要执行流程):
数据丢失问题 :在主服务器故障的情况下,可能存在数据未完全同步到从服务器的情况,导致数据丢失或不一致。
同步复制是一种最为严格的复制模式,它要求 主服务器在提交一个事务之前,必须等待所有从服务器确认确认接收到并应用了事务之后,主服务器才会向客户端返回事务提交成功的消息 。
同步复制执行流程如下:
半同步复制是一种折衷方案,它结合了异步复制的高性能和同步复制的高可靠性。在半同步复制模式下,主服务器在提交一个事务之前,需要等待至少一个从服务器确认接收到该事务的日志,但不需要等待从服务器完成应用。
半同步执行流程如下:
因此, 想要保证数据完全一致性需要使用同步复制 ,但这会牺牲一定的性能;因此在生产环境我们可以使用半同步保证较好的数据一致性即可;而默认的异步方式实现最简单、性能最好,但可能存在数据不一致的风险,虽然发生的概率极低(生产环境也可以使用)。