使用数据库读写拆分扩展Joomla


9

我在北美有一个mysql服务器(使用Amazon RDS)和一个只读副本。我还拥有一个新区域-澳大利亚的只读副本。

由于Joomla读取北美洲主要数据库服务器的动态特性,因此澳大利亚服务器的运行速度极慢。我试图为此使用mysql代理来拆分读/写,但这不是一个长期的解决方案。Mysql代理看起来已经无效。

我还有什么其他选择?

Answers:


2

Joomla(和其他类似的CMS)已针对LAMP体系结构进行了开发,并考虑了通用托管。例如,Web服务器和数据库之间的等待时间短。

Amazon RDS旨在扩展云中的关系数据库。因此,由于区域分布和冗余很重要,因此期望更高的延迟。

如果您有要求Amazon RDS的特定要求,则可以配置:

  • Joomla和本地MySQL,用于站点常规管理(静态资产,易于复制)
  • Amazon RDS连接,针对您的开发的特定于应用程序的连接

考虑到低延迟而开发的第三方扩展不适用于Amazon RDS。


不确定我是否理解您的两点?我将继续使用RDS,因此您是否建议在澳大利亚使用Master RDS?另外,我可以肯定地使用带有自定义组件的只读副本的RDS连接,而不使用Joomla核心。因此,不确定特定于应用程序的连接的含义。你能详细说明一下吗?
汤姆

2

如果您使用的是最新版本的PHP,则您可能正在使用php mysqlnd驱动程序。http://us3.php.net/manual/zh/book.mysqlnd.php

Mysqlnd具有自定义插件API,可以与mysql代理以相同的方式工作-例如http://pecl.php.net/package/mysqlnd_ms是一个可拆分读写的插件,并且具有最新的正式发行版9/2013

另外请记住,Joomla始终会写入会话表。使用memcache或apc只是将会话数据存储在缓存中,而不是会话元数据。

通过删除#_sessions表并使用Memory数据引擎而不是innodb或myisam重新创建表,可以获得相同的性能提升。


1

Joomla生成的每个页面都需要写入会话表。

因此,我建议使用memcache或apc进行会话管理。这应该可以帮助您实现对数据库的零写入,因此对于大多数页面而言,只读副本就足够了。


这是一个很好的观点。这将有助于写入,但真正重要的是如何使用Joomla核心的只读副本?现在,我只看到mysql代理或破解内核作为选项。我想HAproxy也是一个选择,但是还不清楚。
汤姆(Tom)

1. AWS本身支持复制(aws.amazon.com/rds/faqs/#replication)2 .其他选项是mysql内置复制
Shyam

我觉得你误会了。我已经在使用RDS复制。我的问题是如何将Joomla读取操作拆分到该只读副本。
汤姆(Tom)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.