MySQL 复制 - 我应该从客户端代码 (PHP) 处理负载平衡吗?

发布于 2024-08-31 15:59:20 字数 1431 浏览 6 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

[旋木] 2024-09-07 15:59:20

常见的做法是在 mysql 集群前面设置类似 ldirectord 的东西,以提供虚拟 ip 作为集群的负载平衡地址,然后这可以将您的查询分发到各个 mysql 服务器。

这将需要 ipvs 路由,这对于您的具体情况可能/可能不会太过分,负载平衡的 php 控制可能适合您想要实现的目标。

Common practice would be to set up something like ldirectord in front of your mysql cluster to provide a virtual ip as a load balanced address for the cluster, this could then distribute your queries to the various mysql servers.

This would require ipvs routing which may/may not be overkill for your specific situation, it may be that php control of the load balancing would be appropriate for what you are trying to achieve.

╰つ倒转 2024-09-07 15:59:20

是和不是。

实际上有两个问题需要回答:

  1. 这个查询应该发送到从数据库还是主数据库?
    • 这个逻辑可能应该用 PHP 编写。通常情况下,您必须拥有绝对最新的数据,而这是从属设备无法获得的。例如,如果用户更改了页面,您需要从主数据库构建更新的页面——用户的更改可能尚未到达从数据库。这是非常特定于应用程序的,因此第 3 方工具可能无法为您执行此操作。
  2. 这个查询应该发送到哪个从站?
    • 这个,您可能不需要自己编写 - 对于您的应用程序来说,哪个特定从站处理请求并不重要。现有工具应该可以很好地处理这个问题。

Yes and no.

There are really two questions to be answered:

  1. Should this query go to a slave, or the master db?
    • This logic should probably be in PHP. There are often cases where you must have the absolute freshest data, which can't be had from a slave. For example, if a user alters a page, you need to build the updated page from the master db -- the user's changes may have not made it to the slave dbs yet. This is very application-specific, so 3rd party tools may not be able to do this for you.
  2. Which slave should this query go to?
    • This, you probably don't need to write yourself -- it's not really important to your application which specific slave handles a request. Existing tools should handle this well.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文