如何为主从设置编写 PHP MySQL 类?

Posted

技术标签:

【中文标题】如何为主从设置编写 PHP MySQL 类?【英文标题】:How to code PHP MySQL class for master and slave setup? 【发布时间】:2011-09-02 00:38:45 【问题描述】:

我从来没有为我的 mysql 数据库使用过主/从设置,所以如果我在这里没有任何意义,请原谅。

我很好奇,假设我想要一个主数据库和 3 个从数据库。我需要编写我的数据库类来连接和添加/更新/删除条目到主数据库还是以某种方式自动化?

对于我的 SELECT 查询,我是否需要对其进行编码以随机选择一个随机数据库服务器?

【问题讨论】:

【参考方案1】:

您想使用(和研究)的是MySQL Replication。这完全独立于您的代码来处理。您使用数据库就像有 1 或 100 台服务器一样。

【讨论】:

那么,我将不得不与主表建立一个 mysql 连接,其余的将自行处理? 我自己从来没有设置过,但是是的,这就是我的理解。 bumperbox's answer below 补充说明。【参考方案2】:

听起来你想提高性能/平衡负载

是的,您需要对主数据库进行任何破坏性更改。从站只能用于只读。您还需要注意不要立即写入主服务器并从从服务器读取,否则数据可能尚未复制到从服务器。所以任何瞬时读取仍然需要来自主节点。

我不建议只是随机选择一个奴隶。如果地理区域分散,您可以按地理区域执行此操作,或者如果您在集群中运行,您可以使用代理为您进行负载平衡..

这里有一些可能会有所帮助的更多信息

http://agiletesting.blogspot.com/2009/04/mysql-load-balancing-and-read-write.html

【讨论】:

【参考方案3】:

您应该考虑使用mysqlnd_ms - php 的复制和负载平衡插件。

我认为这是更好的解决方案,尤其是对于生产环境,因为它是 PHP 原生的,而 MySQL Proxy 仍处于 Alpha 版本。

有用的链接:

https://blog.engineyard.com/2014/easy-read-write-splitting-php-mysqlnd http://pecl.php.net/package/mysqlnd_ms

【讨论】:

【参考方案4】:

主/从设置应该由 MySQL 服务器自动处理,因此您不需要任何特殊代码来进行此配置。

【讨论】:

以上是关于如何为主从设置编写 PHP MySQL 类?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 jabberd14 服务器编写客户端

如何为用户实现关注者,如在 twitter 中

如何为客户创建登录名?

如何为网站编写高效的计数器

如何为使用两个数据库(mysql和mongo)的django项目编写单元测试

如何为 Apache Spark 数据集中的枚举列编写案例类?