多台服务器使用单个数据库?

多台服务器使用单个数据库?

我从来没有做过这样的事情。我目前正在运行一个论坛和服务,它们依赖于同一台服务器上的同一数据库,但随着它们的发展,很明显 1 个盒子是不够的。此外,当我进一步添加更多内容时,这将是很好的经验。

所以我有一个论坛(vbulletin)和一个 wcf 服务,它使用用户表在用户登录服务时获取用户信息。

我应该如何将它们分开?我认为让服务远程连接会很慢。我读过有关复制的文章,但我真的不确定如何设置。复制是否也支持只复制单个表?因为我不需要它复制整个数据库。

我正在考虑获得一个稳定的第三台服务器来托管 mysql 数据库,这样如果论坛服务器出现故障,服务器仍将正常工作。但这将如何实现?复制可以双向进行吗?例如,对论坛服务器上复制数据库的更改将发送到数据库服务器。

答案1

Web 应用程序扩展路径是:

  1. 所有内容都包含在一个盒子中
  2. 获得更大的盒子
  3. 将数据库拆分到其自己的框中
  4. 获取更大的数据库框
  5. 优化数据库(可以早点做,但人们不了解良好的数据库优化可以带来什么价值)
  6. 分割数据库,或者将你的灵魂卖给复制之神

您可能还会在其中的某个地方看到“获取负载平衡器和更多 Web 应用程序框”,但这不是重点。还请注意,这是扩展路径,而不是高可用性路径,因此复制和冗余不会涉及其中。

您目前处于步骤 1 或步骤 2。您距离步骤 6 还有很长的路要走,并且您想保持这种状态 —— 分片很糟糕,而复制会消磨掉您生存的意志。

如果像您在对 BenGC 的评论中所说的那样,您无法将两个盒子放在同一个机架和物理网络段中,那么请找一个不错的托管提供商。Billy Bob's Servers & All-you-can-eat Crawfish Hut 可以做到这一点(尽管 Rackspace 在这方面存在问题——因此我的太阳穴上出现了凸起的青筋),所以您不必为了适应托管提供商的缺乏能力而做出调整。

答案2

通过 LAN 将查询发送到另一台服务器的成本可以忽略不计(大概几毫秒)。我认为对您来说,最好的办法是使用第三台服务器,让您的应用程序直接查询它。这样,即使 Web 服务器崩溃,它也能保持运行。复制在您的情况下有效吗?当然。但真的有必要吗?可能不需要。

您的单独 DB 服务器将需要大量的 RAM、快速的磁盘(例如 10k RPM),并且您需要将其专用于 MySQL。

相关内容