主从数据库不一致如何解决?

场景描述,对于主从库,读写分离,如果主从库更新同步有时差,就会导致主从库数据的不一致。
1、忽略这个数据不一致,在数据一致性要求不高的业务下,未必需要时时一致性。
2、强制读主库,使用一个高可用的主库,数据库读写都在主库,添加一个缓存,提升数据读取的性能。
3、选择性读主库,添加一个缓存,用来记录必须读主库的数据,将哪个库,哪个表,哪个主键,作为缓存的key,设置缓存失效的时间为主从库同步的时间,如果缓存当中有这个数据,直接读取主库,如果缓存当中没有这个主键,就到对应的从库中读取。

问题原因:

网络信息不同步,数据发送有延迟

根本上解决:

  1. 优化主从间的网络环境,通常放置在同一个机房部署,如使用阿里云等云服务器时要注意此现象
  2. 监控主从节点延迟(通过offset)判断,如果slave延迟过大,暂时屏蔽程序对该slave的数据访问