我的网站如何拥有 2 个数据库服务器?

mr *_*ido 5 mysql scaling

我有一个流量很大的站点,而我的数据库服务器 (mysql) 在高峰时段流量很大。我没有升级到更好的服务器,而是考虑让 2 个数据库服务器一起工作,以便可以“拆分”繁重的流量。

我的问题是这怎么会发生?2 台不同的机器如何处理 1 个数据库?实现这样的事情的常见做法是什么,你建议我做什么?

我的 Web 服务器将如何与数据库服务器通信?Web 服务器应该只与其中一个通信还是与它们两个通信?

ues*_*esp 6

您可以考虑几个选项来提高数据库性能,而不仅仅是扩展。

  • 优化 MySQL 设置——有几十个配置参数会对 MySQL 的性能产生巨大影响。在决定是否真的需要扩展之前,请务必先调查此选项。
  • 优化应用程序——就像保罗提到的那样,确保你的应用程序运行合理。如果您不使用正确的索引和查询,无论服务器数量如何,从长远来看,您的性能都会很差,并且会浪费金钱/时间。
  • 扩大规模——获得更大的机器可能是一个更简单的解决方案,具体取决于您当前使用的硬件级别。但是,对于每个应用程序,在某些时候开始横向扩展(复制/分片)会更便宜/更好。
  • 复制——通常的配置是有一台主服务器和多台从服务器。Master 得到所有的写请求,任何一个 slave 都可以处理读请求。这对于您期望读取多于写入的情况很有用。
  • 分片——有多个 MySQL 服务器,每个服务器处理整个数据库的一部分。例如,用户 ad 在 db1 上,ei 在 db2 上,等等......我相信这是在应用程序层而不是 MySQL 本身处理的。

以上项目按我调查的顺序排列,尽管这取决于应用程序和您的要求。例如,如果您还希望为高可用性设置添加冗余,那么复制可能是显而易见的选择。