读写分离

所有写操作必须对应到主库,读操作可以在主库和从库机器上进行。主库与从库的结构完全一样,一个主库可以有多个从库。读写分离的方式可以有效的提高数据库集群的吞吐量。

常见的主从模型:

  • 主-主-从
  • 主-从-从

问题

  • 主从不同步。所有的写操作在主库中执行,然后异步的更新到从库上。所以从主库同步到从库,有一定的延迟。当系统繁忙时,延迟问题会更加严重。从库机器数量的增加也会使这个问题更严重。
  • 主库是集群的瓶颈,当写操作过多时会严重影响主库的稳定性,如果主库挂掉,则整个集群都将不能正常工作。

最佳实践

  • 当读操作压力大时,可以考虑添加从库来分解大量读操作带来的压力,但当从库达到一定的数量时,就需要考虑分库来缓解压力了。
  • 当写的压力大时,就必须进行分库操作了。
  • 集群中机器的性能不一,某些性能高,某些性能低。这时需要设置读写比重来达到负载均衡。