我有一个网站stream量很大,我的数据库服务器(MySQL)在偷看时间stream量很大。 我没有升级到更好的服务器,而是考虑让2个数据库服务器一起工作,这样繁重的stream量就可以“分离”。
我的问题是如何发生这种情况? 如何1个数据库可以由2个不同的机器处理? 实现这样的事情的常见做法是什么?你build议我做什么?
我的networking服务器将如何与数据库服务器通信? Web服务器应该只与其中一个或两个人沟通?
有几个选项可以考虑提高数据库性能,而不仅仅是扩展。
上面的项目是我要调查他们的顺序,虽然这取决于应用程序和您的要求。 例如,如果您也希望为高可用性设置添加冗余,那么复制可能是明显的select。
有人发布了一个livejournal mysql安装程序的链接。 他们说,最好是坚持一个大的服务器,而不是聚集在一起。
分析一个livejournal家伙在这里的幻灯片: http ://www.danga.com/words/2004_mysqlcon/
我的build议是开始优化您的查询和索引。 这将我的负载从平均4降低到了0.5。 令人惊叹的,嗯? 通过只增加额外的索引。
HTH
将它们聚类 。
你通常想要在这里发生的是你所有的写操作总是一样的(主),并且你使用某种forms的复制来同步从主服务器到从服务器的新数据。 然后,您可以使用负载平衡器在可用的各种物理服务器之间分配读取查询,但是对于某些情况,这些服务器可能稍微过时。 负载平衡器也需要足够聪明,以便知道某些种类的查询需要从主服务器完成,所以例如当我把这个post添加到堆栈溢出时,我不必等待复制赶上我的新post,如果我最终负载平衡到辅助服务器。 简而言之,应用程序也需要编写以便了解这一点。 你不能只是在数据库中打开一个选项,让它们都能正常工作。
如果你只是升级服务器,底线可能会更好看。 运行两个实时数据库增加了很多复杂性,并且不值得相对较小的硬件成本。 真正的大型系统使用诸如Oracle RAC之类的东西来在多台机器上运行相同的数据库,但是在百万美元的服务器集群区域中听起来并不像你所说的那样。 有一个温暖的待机总是一个好主意,你可以使用复制,以保持准备去。