我想购买 2 台专用服务器,一台用于保存 mysql 数据库,另一台用于运行 web 应用程序,我不确定这是否是个好主意。
ps 在访问数据方面我打算进行数据库复制,在 Web 服务器上设有从属数据库,而主数据库显然在 mysql 服务器上!
谢谢
答案1
一般来说,这是一个好主意。将您的数据库复制到另一台机器上,应该会增加您的整体正常运行时间 - 但通常只有在它们位于不同的数据中心时才会如此。我的一个站点不可用的大部分时间都是数据中心故障(电源和备用电源故障、数据连接丢失、交换机被杀死……),只有少数计划外的停机时间发生在机器或我的帐户上。但这很可能会降低您的性能……
在安全性方面,将数据库和网络服务器分开到不同数据中心的不同机器上,并备份其他机器的数据,这样比较好。
在性能方面,将应用程序和数据库分离到同一数据中心的不同机器上是可以的 - 但这样就不需要复制了。通常的备份就足够了,在应用程序服务器上运行从属服务器最终会降低整体性能。如果运行此设置,您可能可以省去额外的服务器。根据您的实际数据库查询,您可能能够在以后添加额外的应用程序服务器而无需添加另一个数据库服务器。然后通过 MySQL 从属服务器进行热备用解决方案可能是一个选择。
答案2
一般来说,将 DB 和 Web 服务器分开是一个好主意。您不需要在 Web 服务器上再安装一个 DB 服务器,只需让您的应用程序直接连接到 DB 服务器即可。
答案3
不,这是一个愚蠢的想法。它将使您的应用程序运行速度比其他方法更慢、更不可靠……
将两台机器都设置为 Web 服务器和数据库服务器。一台作为 mysql 主服务器,另一台作为从服务器。添加循环 DNS。如果您愿意,您可以在托管从服务器的机器上加权网站地址,以将更多流量推送到那里。
对于完全透明的故障转移方法,主-主方法可能更好 - 如果您确实愿意,您仍然可以为一个节点实现更新亲和性,为另一个节点实现 Web 请求亲和性。
这使您可以:
- 在两个系统之间均匀且可控地分配负载
- 将系统的可用性提高几个数量级
- 任一节点上的终端中断均可简单快速地恢复
将功能分散到 2 个节点意味着您现在有 2 个单点故障。如果您为 2 种方法建模故障概率,假设故障概率为 0.001,那么使用等效节点,导致系统不可用的故障概率为 0.001 x 0.001。另一方面,对于堆叠方法,导致系统不可用的故障概率为 0.001 + 0.001
每次需要从数据库读取数据时都必须通过网络(对于大多数应用程序来说,数据库读取比写入频繁得多),这通常比访问本地服务慢至少 10 倍。
答案4
ps 在访问数据方面我打算进行数据库复制,在 Web 服务器上设有从属数据库,而主数据库显然在 mysql 服务器上!
我认为复制到 Web 服务器上不会带来太多性能优势,但它确实设置了数据库的一个很好的最新副本,这有利于数据安全,但绝不能替代备份,只要额外的负载不会妨碍 Web 应用程序的性能。
如果您确实要使用复制,请确保 Web 应用程序已经能够与 MySQL 复制配合使用(或专为此设计)。关键问题是复制如何最终保持一致,这意味着从服务器可能会落后于主服务器一段时间,因此不应将其视为权威数据源。