一、读写分离介绍

为什么读写分离:

  • 正常只能在主数据库服务器上执行
  • 读操作主和从上都可以(读往往比写操作更多)

读写分离的两种方式:

  • 程序实现读写分离
  • 中间件实现读写分离

程序实现读写分离

优点

  • 由开发人员控制什么样查询在从库中执行,因此比较灵活
  • 由程序直接连接数据库,所以数据库性能损耗比较少

缺点

  • 增加了开发的工作量,使程序代码更加复杂
  • 人为控制数据库读写,容易出现错误

中间件实现读写分离

优点

  • 由中间件根据查询语法分析,自动完成读写分离
  • 对程序透明,对于已有程序不用做任何调整

缺点

  • 增加了中间层,所以对查询效率有损耗
  • 对于延迟敏感业务无法自动在主库执行

数据库读写分离中间件

通过数据库中间件实现

  • mysql-proxyMySQL官方提供:一直没有稳定版本,老前辈,性能和稳定性不好)
  • MaxScale (MariaDB提供:比较好)

优点:

  • 由中间件根据査询语法分析,自动完成读写分离
  • 对程序透明,对于已有程序不用做任何调整

大并发高负载容易出问题

  • 由于增加了中间层,对查询效率有损耗
  • 对于延迟敏感业务无法自动在主库执行

读写分离:要解决的是如何在复制集群的不同角色上,去执行不同的SQL语句
读的负载均衡:主要解决的是具有相同角色的数据库如何共同分担相同的负载


如何实现读负载均衡

软件方式

  • LVS
  • Haproxy
  • MaxScale

硬件方式

  • F5