我的网站在流量方面一直在增长,而mysql上的负载也在增加。我想要一个解决方案来帮助处理mysql上增加的负载(所有的查询都已经优化了),因为流量+备份服务器增加了,如果我的主服务器出现故障,它可以作为故障转移。
我读过关于设置多个web和数据库服务器的文章,但有几个问题:
1)如何在维护相同内容的同时设置多个web服务器(每次更新时我都要将文件上传到所有服务器,还是有其他方法?)
2)类似地,如果我必须将DB扩展到多个服务器,那么除了复制之外,还有其他方法吗?或者mysql复制是最好的方法。
3)我曾经读过,将数据库与web服务器分离是一个好主意,为什么?如果我有两个服务器,就不能同时拥有DB和两个服务器上的文件。
4)是否需要一种称为负载均衡器的东西,如果建立了复制,它是否也有助于平衡mysql查询?
只是很迷茫,想帮忙。
发布于 2010-09-30 12:55:51
传统的设置是将web/应用程序服务器和DB服务器分开。把它们放在同一个盒子里是很有限制的。如果您的web应用程序包含静态和动态内容的混合,那么进一步的分离(单独的web服务器、应用程序服务器和内容服务器)将提高性能。
就MySQL而言,您可能想试试这些;
发布于 2010-09-30 13:39:03
1)如何在维护相同内容的同时设置多个web服务器(每次更新时我都要将文件上传到所有服务器,还是有其他方法?)
情况随着规模的增加而变得更加复杂。首先,您只需手动将所有内容同时部署到所有服务器。你可以写一个脚本来完成这个任务。
由于您可以更大,配置管理软件可以提供帮助。另外,OpenEFS将是一个合适的解决方案。
对于静态内容和某些类型的内容,有更多的选项可用。这些决定是因为当您试图通过负载平衡应用程序本身修改或上载内容时,如果处理得不好,就会导致数据分区。例如,上传的文件将只位于一个负载平衡服务器上。
不按特定顺序:
2)类似地,如果我必须将DB扩展到多个服务器,那么除了复制之外,还有其他方法吗?或者mysql复制是最好的方法。
这取决于您的最终目标:一致性、可用性或分区容忍度。妥协可能是必要的。这是一个广泛的主题,在那里,你会受益于阅读一本书,如高性能MySQL。共同选择:
MySQL还发布了各种白皮书。
3)我曾经读过,将数据库与web服务器分离是一个好主意,为什么?如果我有两个服务器,就不能同时拥有DB和两个服务器上的文件。
因为它降低了复杂性和安全风险,因此更好地将角色奉献给目标。您可能会受益于至少两个负载平衡器、两个数据库服务器和两个Web服务器。注意额外的故障点,因为高可用性不会就此停止。您的网络很可能是下一个明显的单一故障点。
它还支持标准构建、缩放和转换角色,减少了复杂性。然而,这些特性并不是分离服务器角色的唯一特性。
4)是否需要一种称为负载均衡器的东西,如果建立了复制,它是否也有助于平衡mysql查询?
对于写查询和MySQL,垂直扩展通常更容易。要进行横向扩展(这是许多现代解决方案所首选的),您需要使用像切分这样的体系结构。理想情况下,您的应用程序必须设计为支持这一点。还有各种各样的中间件解决方案,我通常都很担心。
您可以轻松地将平衡加载到MySQL复制从服务器,这将允许您使用负载平衡的VIP进行只读查询。
https://serverfault.com/questions/186180
复制相似问题