![我的网站怎样才能拥有 2 个数据库服务器?](https://linux22.com/image/539749/%E6%88%91%E7%9A%84%E7%BD%91%E7%AB%99%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E6%8B%A5%E6%9C%89%202%20%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我有一个网站,流量很大,我的数据库服务器 (mysql) 在高峰时段流量很大。与其升级到更好的服务器,我考虑让 2 个数据库服务器一起工作,这样就可以“分担”大流量。
我的问题是这种情况怎么会发生? 1 个数据库如何由 2 台不同的机器处理? 实现此类目标的常见做法是什么?您建议我做什么?
我的 Web 服务器如何与数据库服务器通信?Web 服务器应该只与其中一个服务器通信还是同时与两个服务器通信?
答案1
您可以考虑一些选项来提高数据库性能,而不只是包括扩展。
- 优化 MySQL 设置-- 有几十个配置参数会对 MySQL 的性能产生巨大影响。在决定是否真的需要扩展之前,请务必先研究此选项。
- 优化应用-- 就像 Paul 提到的那样,确保您的应用程序运行合理。如果您不使用正确的索引和查询,无论服务器数量多少,您的性能都会很差,并且从长远来看会浪费金钱/时间。
- 扩大-- 根据您当前的硬件水平,购买更大的机器可能是一个更简单的解决方案。但是,对于每个应用程序,在某个时候,开始扩展(复制/分片)会更便宜/更好。
- 复制-- 通常的配置是拥有一个主服务器和多个从服务器。主服务器接收所有写入请求,任何从服务器都可以处理读取请求。这非常适合您期望读取比写入多得多的情况。
- 分片-- 有多个 MySQL 服务器,每个服务器处理整个数据库的一部分。例如,用户 ad 在 db1 上,用户 ei 在 db2 上,等等... 我相信这是在应用程序层处理的,而不是 MySQL 本身。
上述项目是我将调查的顺序,但这取决于应用程序和您的要求。例如,如果您还希望为高可用性设置添加冗余,那么复制可能是显而易见的选择。
答案2
有人发布了一个 livejournal mysql 设置的链接。他们说最好坚持使用一台大型服务器,而不是将其集群化。
分析一下来自其中一位 livejournal 人员的幻灯片:http://www.danga.com/words/2004_mysqlcon/
我的建议是开始优化您的查询和索引。这使我的负载从平均 4 降至 0.5。很神奇吧?只需添加额外的索引即可。
高血压
答案3
簇他们。
答案4
如果您只是升级服务器,底线可能会看起来更好。运行两个实时数据库会增加很多复杂性,不值得花费相对较小的硬件成本。真正大型的系统使用 Oracle RAC 之类的东西在多台机器上运行同一个数据库,但这听起来不像您处于百万美元的服务器集群区域。拥有热备用始终是一个好主意,您可以使用复制来使其随时可用。