我们正在设置MySQL主从复制,一切都运行得很好。
目前,所有负载(读/写)都将发送到主服务器。我们的应用程序有99%的读取和1%的写入。
我们考虑将负载(只读)分配给Master和Slave。因此,我们考虑使用HAProxy将负载分配给两个MySQL服务器。
我们的要求是所有写操作仅重定向到主服务器,读操作在主服务器和从服务器之间分配。
发布于 2016-05-10 18:40:52
我已经在我的项目中实现了同样的方法。我在Ha-Proxy (LB01)后面有两个DB服务器( DB01,DB02 )。假设我的应用程序中有一个DB,我点击了ha-proxy。在我的应用程序中,我将数据库查询分发为在3307端口上读取,在3306端口上写入。
在haproxy.cfg (配置文件HAPROXY)中,两个侦听器为:
listen mysql-cluster
bind *:3306
mode tcp
balance roundrobin
option mysql-check user mast_ha
server DB01 10.x.x.x:3306 check maxconn 100000
listen mysql-cluster-replica
bind *:3307
mode tcp
option mysql-check user mast_ha
server DB02 10.x.x.x:3306 check maxconn 100000并通过制作两个jdbc模板,一个用于读,一个用于写,来分发应用程序对mysql的调用。
发布于 2015-02-12 20:12:38
我们已经成功地为一个非常密集的读/写应用程序实现了我们的DB架构。我们有一个主机,所有的读/写操作都发生在这里,而两个从设备(A,B)中,所有的读操作都发生在那里。通常,主从复制假定读操作在从服务器上进行,所有其他操作(读和写)都在主服务器上进行。换句话说,slaves平衡了读操作。
我们在为读请求提供服务的WebServer之后放置了一个HAProxy。WebServer通过HAProxy连接到从机。HAProxy检查从站的状态,并在主站和从站之间平衡请求。为了便于配置,我们将DB服务器放在不同的LAN上。HAProxy的配置非常简单:只需使用默认配置并更改listen语句即可。例如:
listen slaves 10.8.214.14:3306
balance roundrobin
option tcpka
mode tcp
option mysql-check user haproxy
server master 10.8.214.12:3306 check weight 1
server slave1 10.8.214.11:3306 check weight 1
server slave2 10.8.214.13:3306 check weight 1还要记住在引导时启用haproxy。
如果您想更进一步,可以使用一些脚本集成对从属状态(SQL错误或同步问题)的监控。Ha proxy可以使用您想要的任何代理。看看here和here
如果你有一个非常密集的应用程序,我建议你使用合适的存储引擎,比如TokuDB,它可以很好地适应数据库的大小。
发布于 2016-04-21 10:36:40
MySQL代理具有拆分读/写拆分的功能。和负载均衡背后的多台mysql服务器。除了一些复杂的语句,读/写分离在大多数情况下都是有效的。
免责声明: MySQL Proxy目前是Alpha版本,不应在生产环境中使用。
https://stackoverflow.com/questions/28089708
复制相似问题