你的MySQL数据库应该与Apache服务器分开吗?

时间:2013-08-01 09:58:16

标签: mysql database architecture

我的公司目前在VPS服务器上运行一个基于LAMP的网站,因此数据库和Web服务器实际上位于同一个盒子上。

我们正在开发一个新网站,我们计划在同一台服务器上托管(即我们将在服务器A上拥有foo.com和bar.com的所有内容)。

但是,我们预计流量会增加,并且热衷于提高弹性和可扩展性。我建议使用带有单独数据库服务器的负载均衡架构,即:

                                Internet
                                   ¦
                              Load Balancer
                               /        \
                       ¦ Server A ¦   ¦ Server B ¦
                               \        /
                              ¦ MySQL DB ¦

这是一种明智的做法吗?还是过度设计?将所有内容保存在单个服务器上对我来说感觉很危险。虽然在这个阶段我们可能不需要负载平衡,但是从网络服务器拆分数据库仍然是明智的吗?

我已经看到了几个与此类似的问题,但我不确定它们是否适用于Apache / MySQL上下文。当我在Windows服务器环境中工作时,他们总是有单独的数据库服务器。

2 个答案:

答案 0 :(得分:8)

是的,拆分数据库和Web服务器是个好主意。肯定。

其中一个主要原因是每种技术(Web服务器,数据库)都将竞争物理资源。例如,假设您还将缓存放在单个服务器上。现在你有一个Web服务器,缓存和一个所有竞争RAM的数据库。只有这么多才能到处走。

此外,不同的技术将以不同的速度扩展。您可能只需要群集中的2-3台数据库计算机和10台Web服务器。他们有不同的需求,并会有不同的发展。现在以增长为目标咬紧牙关并不是一个坏主意。

至于对单个MySQL服务器感到紧张......我认为必须设置一个工作来每晚备份整个数据库。

此外,我已经看到生产机器将数据复制到另一个充当热备份的MySQL盒子。设置起来并不困难,但确实耗费了另一台机器。

答案 1 :(得分:4)

我不同意ryan1234。

资源使用模式应该与DBMS和网络服务器完全不同。

此外,如果您计划增加机器数量,那么不要利用这个机会让网站更容易恢复中断,这是相当愚蠢的。

如果是我,我很可能会选择2个运行Web服务器的服务器运行mysql,这两个服务器都在数据库上提供相同的vhost和master-master异步复制(具有将流量定向到单个节点的工具)数据库/网络服务器的单个节点。

是的,如果您需要添加比此更多的硬件来管理容量,那么将DBMS拆分为单独的层是个好主意。但你似乎还有很长的路要走。