一.MYSQL主从复制配置
二.主从读写分离的两种方式
1.通过客户端实现,比如php YII框架
主从架构中会出现主从延迟主从数据不一致,以及slave的负载均衡中,当某一台slave宕机了,能否把请求转发给其他slave,可以借助第三方负载均衡软件HAProxy
HAProxy提供了高可用性、负载均衡以及基于TCP和HTTP应用的代理,它支持虚拟主机,是一种免费、快速并且可靠的解决方案。对于那些负载特大的Web站点来说,HAProxy特别适用。这些站点通常需要实现会话保持或七层处理,HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。
HAProxy具体以下特性:
1)免费开源,稳定性非常好。
2)根据官方文档,HAProxy使用Myricom厂商的万兆网卡可以将10Gb/s的网络带宽跑满,这个数值作为软件级负载均衡器是相当惊人的。
大多数公司的架构是通过客户端方式实现的:一个主库,多个从库。主库负责写,从库负责查询,主库的高可用性通过MHA(Master High Avail-ability)实现,从库读的负载均衡通过LVS或者HAProxy实现(Java框架和PHP框架实现读/写分离)
通过HAProxy代理,基于connect方式,以及自定义脚本,可以解决slave延迟或宕机故障转
2.通过proxy解析sql实现
MaxScale使用C语言开发,利用Linux下的异步I/O功能,使用epoll作为事件驱动框架。它是MariaDB开发的一个数据库智能代理服务,允许根据数据库SQL语句将请求路由到多个服务器,且可设定各种复杂的转向规则。MaxScale可用于透明地提供数据库的负载均衡和高可用性,同时也可提供高度可伸缩和灵活的架构,支持不同的协议和路由决策。
MaxScale有两种方式实现读/写分离。
一种是基于connect的,类似于HAProxy,不解析SQL语句,可以通过PHP Yii框架或Java Mybatis框架实现。在此方式中,用MaxScale做多台slave的负载均衡,并且支持主从同步延迟检测功能。
另一种是基于statement的,要解析SQL语句。在这种方式里,前端程序不需要修改,通过MaxScale对SQL语句进行解析,把读/写请求自动路由到后端数据库节点上,从而实现读/写分离。商业软件OneProxy中间件也是基于statement方式实现读/写分离的。