如何解决数据库主从数据不一致的问题

数据库集群架构

目前流行的数据库集群架构包括以下三点:
一主多从:高可用方案,主库挂掉,从库会变成主库;
读写分离:减少单机数据库压力,主库提供写服务,从库提供读服务;
主从同步:为了保证一致性,从库会实时与主库同步数据,但是会有延迟。
如何解决数据库主从数据不一致的问题_第1张图片

可能会产生的问题

同步延迟可能会导致主从数据不一致。例如:主库正在进行写操作,从库同时也正在读操作,但此时从库还未同步到主库的最新数据,导致从库读到脏数据。

如何解决

忽略:在业务不保证数据强一致性的情况下,可以选择忽略(技术永远是为业务提供服务的!);
强制性读写主库:读写都落在主库上,从库只用来做备库防止主库挂掉,可以采用缓存方式缓解主库压力(先读缓存再读数据库);
如何解决数据库主从数据不一致的问题_第2张图片
选择性读写主库:上面的那种方案对于主库来说压力还是很大,可以考虑多加一个缓存来判断主从是否同步完成。当写请求主库的时候,同时缓存记录一个key(key值可以是数据库名:表名:主键的形式),超时时间设置为主从同步的延迟时间。读的时候,先判断缓存里是否有这个key,有就说明主从同步还没完成,此时读主库。无就说明同步已完成,此时读从库。
如何解决数据库主从数据不一致的问题_第3张图片

你可能感兴趣的:(数据库,数据库,分布式,redis,mysql,java)