如何使用1个数据库连接进行读取,另一个用于写入WordPress MySQL?

时间:2012-12-14 08:09:27

标签: mysql wordpress amazon-rds

我正在使用Amazon RDS实例为我的所有6个WordPress网站托管MySQL数据库。在最大网站流量达到峰值的那一刻,RDS实例的CPU利用率达到100%超过一小时。

我正在考虑通过read活动拆分数据库服务器的负载。我网站的大部分流量都来自未登录的用户。所以,我想将这些未登录的用户连接到一个只读副本RDS实例,为什么其余的,到源RDS实例,我正在使用的当前数据库连接。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:9)

扩展Wordpress 随着您网站上的流量增加,您在服务器上也会遇到更多负载。为了跟上你的速度,你有两种可能:scale up - 增加你的盒子的大小 - 这 - 特别是在AWS上 - 显然除了其他缺点之外还有限制,例如在两个方向上缩放的停机时间。

scale out:拆分流量,让几台机器完成工作。 只需在流量增加超过阈值时添加计算机,并在流量较低时移除电源。

通常的设置缩放可以在您的Web服务器或数据库服务器上完成。 AWS可以帮助您。由于数据库是常见的瓶颈,而这个问题实际上是希望解决这个问题,我现在将讨论数据库扩展。

Amazon RDS(托管MySQL SaaS)提供一键式解决方案来创建数据库的只读副本。在数据库世界中,只读副本称为复制从属。在主服务器上执行的每个修改查询都将在您的从属计算机上自动重播。

您可以根据需要为用户创建任意数量的只读副本。 现在是复杂的部分。我们正在谈论READ复制品。这意味着,您无法在所有实例上随机平衡查询。只有主服务器才会编写查询。

分割查询类型和均匀分配负载可以通过像MySQL代理这样需要额外机器的数据库代理来实现。您的应用程序将与此代理进行通信,并且不需要自行更改。

尽管Wordpress并非专为主从设置而设计,但本身并不支持,我们都知道有很多博客存在大量流量。

幸运的是有一个名为HyperDB的解决方案

http://wordpress.org/extend/plugins/hyperdb/

这是一个Wordpress插件,可以

  
      
  • 读写服务器(复制)
  •   
  • 可配置的读写优先级
  •   
  • 本地和远程数据中心
  •   
  • 私人和公共网络
  •   
  • 不同数据库/主机上的不同表
  •   
  • 智能后写主读取
  •   
  • 已关闭主机的故障转移
  •   
  • 分析的高级统计信息
  •   

此插件将替换Wordpress中的默认数据库抽象层。 它由Wordpress团队开发并积极使用。

只需下载并确保仔细按照安装说明进行操作。

玩得开心!

答案 1 :(得分:0)

首先按照Amazon FAQ here中的说明设置RDS只读副本。然后获取此计算机的客户端端点(请参阅常见问题解答中的下一个问题)。

我不确定较新版本的Wordpress是否支持您开箱即用的功能,但有一种方法可以检查当前用户是否已登录Wordpress。有method in Wordpress来检查用户是否已登录。如果在建立任何数据库连接之前提前调用此函数,则可以在遇到登录用户时更改数据库连接。