【发布时间】:2011-12-03 13:06:03
【问题描述】:
我计划通过在当前服务器旁边添加另一台 MySQL 服务器来提高我的站点性能,因为当前服务器太忙了。
是否可以在不更改 PHP 代码的情况下通过 MySQL 复制来扩展 PHP 应用程序?我的意思是所有的查询都将发送到主服务器,主服务器将在自己和从服务器之间分配负载。
是否有任何简单的方法可以将所有写入请求发送到主节点并在主节点和从节点之间分配读取请求?
【问题讨论】:
标签: php mysql replication
我计划通过在当前服务器旁边添加另一台 MySQL 服务器来提高我的站点性能,因为当前服务器太忙了。
是否可以在不更改 PHP 代码的情况下通过 MySQL 复制来扩展 PHP 应用程序?我的意思是所有的查询都将发送到主服务器,主服务器将在自己和从服务器之间分配负载。
是否有任何简单的方法可以将所有写入请求发送到主节点并在主节点和从节点之间分配读取请求?
【问题讨论】:
标签: php mysql replication
我认为您还应该优化您的应用程序代码 (PHP),然后您应该优化您的架构。
首先您可以检查您的 MYSQL 查询。 mysql慢查询日志可以帮到你。如果您有连接问题(MYSQL 服务器已消失或连接过多等),您应该管理应用程序的连接池机制。
其他步骤以及您的答案是(我认为),您可以设置 MYSQL 主主复制。当您明确设置复制时,您可以在复制前面放置一个负载均衡器(HAProxy)。 您有 2 个 mysql 节点(服务器 A 和服务器 B,它们都是主服务器) 您可以将 HAProxy 配置为服务器 A 为主服务器,服务器 B 为备份服务器。您的所有 MYSQL 操作都通过 HAProxy 来自服务器 A,并且您的数据会自动与服务器 B 同步。 当服务器 A 关闭时,HAProxy 会自动发送所有查询服务器 B。
您还可以将 HAProxy 配置为服务器 A 用于所有插入查询,服务器 B 用于所有读取查询。 在所有这些情况下,您的代码都应该通过 HAProxy 连接 MYSQL
【讨论】:
我认为您需要在您的数据库服务器和客户端(您的代码)之间放置一个负载均衡器/代理。示例解决方案是:
【讨论】:
如果您不想手动执行“负载平衡”,您可能需要查看MySQL Proxy。
【讨论】: