跳到主要内容

认识

2024年06月18日
柏拉文
越努力,越幸运

一、认识


MySQl 主从复制节点、读写分离 是一种常见的数据库架构设计,用于提升性能、扩展性和可用性。

1.1 为什么要读写分离?

  1. 性能提升:通过将写操作集中到主库,将读操作分散到从库,可以减轻单一数据库实例的负担,提高整体系统的响应速度。

  2. 扩展性:通过增加从库可以水平扩展读操作的处理能力,而不必因为读操作的增加而增加主库的负荷。

  3. 高可用性:主从架构通常可以设置为高可用模式,当主库发生故障时,可以快速切换到从库,确保业务的连续性。

1.2 读写分离解决了什么问题?

  1. 负载均衡:分散读请求到多个从库,减少主库压力,使得读操作不再成为瓶颈。

  2. 资源竞争:读写操作分离后,减少了因资源互相争夺(如锁、CPU、I/O 等)导致的性能问题。

  3. 扩展瓶颈:只需增加从库即可扩展系统处理读操作的能力,而不需要更换更高性能的硬件设备。

1.3 读写分离在开发中会遇到什么问题?

  1. 数据延迟(延时同步):由于主库的写操作需要时间同步到从库,这可能导致从库上的数据并不是实时最新的,对于要求非常高时效性的数据查询可能会带来问题。

  2. 一致性问题:不同步的延迟会使得主库和从库数据在某些时间段内不一致,可能出现查询到的结果是旧数据的情况。

  3. 事务处理复杂性:由于读写操作分离,事务的处理中间状态只存在于主库,而从库中是不可见的,这会增加设计和实现的复杂性。

  4. 数据同步故障:同步机制出现故障可能导致主从数据不一致,甚至数据丢失的风险,需要监控和恢复机制来保障数据一致性。

  5. 负载不均:如果读操作非常少或者写操作非常多,读写分离的效果有限,可能无法达到预期的性能改进。

  6. 代码复杂性增加:应用程序需要明确区分读操作和写操作,并且在数据库连接管理上需要处理好读写分离,这会增加开发和维护的复杂度