所有写操作必须对应到主库,读操作可以在主库和从库机器上进行。主库与从库的结构完全一样,一个主库可以有多个从库。读写分离的方式可以有效的提高数据库集群的吞吐量。
常见的主从模型:
- 主-主-从
- 主-从-从
问题
- 主从不同步。所有的写操作在主库中执行,然后异步的更新到从库上。所以从主库同步到从库,有一定的延迟。当系统繁忙时,延迟问题会更加严重。从库机器数量的增加也会使这个问题更严重。
- 主库是集群的瓶颈,当写操作过多时会严重影响主库的稳定性,如果主库挂掉,则整个集群都将不能正常工作。
最佳实践
- 当读操作压力大时,可以考虑添加从库来分解大量读操作带来的压力,但当从库达到一定的数量时,就需要考虑分库来缓解压力了。
- 当写的压力大时,就必须进行分库操作了。
- 集群中机器的性能不一,某些性能高,某些性能低。这时需要设置读写比重来达到负载均衡。