【问题标题】:HAProxy for MySQL Master-Slave Replication用于 MySQL 主从复制的 HAProxy
【发布时间】:2015-01-22 13:14:48
【问题描述】:

我们正在设置 MySQL 主从复制,一切正常。

目前所有负载(读/写)都将转到 MASTER 服务器。我们的应用程序有 99% 的读取和 1% 的写入。

我们考虑将负载(仅读取)分配给 Master 和 Slave。所以我们想到了使用 HAProxy 将负载分配到两个 MySQL 服务器。

我们的要求是所有的写入都被重定向到只主服务器和读取分布在主服务器和从服务器之间。

【问题讨论】:

  • HA-proxy 不检查它是否是读/写查询。 (这是更多的应用程序逻辑)。您的应用程序应该选择要查询的服务器:如果“写”则服务器 A,否则 B...,然后如果您有服务器 B 运行 HA-proxy,它可以平衡不同 DBservers 之间接收(“读取”)的所有查询

标签: mysql haproxy master-slave


【解决方案1】:

我已经为我的项目实施了同样的方法。 我在 Ha-Proxy (LB01) 后面有两个数据库服务器 ( DB01, DB02 )。我假设我的应用程序中有一个数据库,我点击了 ha-proxy。在我的应用程序中,我将数据库查询分配为在 3307 上读取并在 3306 端口上写入。

在haproxy.cfg(配置文件HAPROXY)中两个LISTENER为:

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。

【讨论】:

  • 如何检查其分布式数据库查询在 3307 上读取并在 3306 端口上写入。请解释:)
【解决方案2】:

我们已经成功地为一个非常密集的读/写应用程序实现了我们的数据库架构。 我们有一个 MASTER 进行所有读/写操作,还有 2 个 SLAVES (A, B) 进行所有读操作。通常,主从复制假设读取在从属上进行,而所有其他事情(读取和写入)在主机上进行。换句话说,slave 平衡读取。

我们在服务读取请求的 WebServer 之后放置了一个 HAProxy。 WebServer 通过 HAProxy 连接到从属服务器。 HAProxy 检查从属的状态并平衡主从之间的请求。 为了便于配置,我们将数据库服务器放在单独的 LAN 上。 HAProxy 的配置非常简单:使用默认配置并更改监听语句即可。 例如:

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 代理可以使用您想要的任何代理。 看看herehere

如果您有一个非常密集的编写应用程序,我建议您使用正确的存储引擎,例如 TokuDB,它可以很好地随数据库大小扩展。

【讨论】:

  • 你在哪里找到它的读请求或写请求?在代码级别
【解决方案3】:

MySQL Proxy 具有拆分读/写拆分的能力。并负载平衡其后面的多个mysql服务器。读/写拆分在大多数情况下都适用于一些复杂的语句。

免责声明:MySQL Proxy 目前是 Alpha 版本,不应在生产环境中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2014-07-07
    • 2012-09-14
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多