我正在考虑如何平衡我们的MySQL基础设施的负载,似乎无法find一个适合我的答案… 🙂
所以,我有一个大的,胖的服务器,处理一切。 许多数据库,许多读取,许多写入等,它处理得很好,但它是一个单一的故障点。
我们build立了一些奴隶来redirect读取它们,但是却遇到了两个问题:重build所有程序来分割读取和写入需要花费很多的精力; 有时候奴隶会落后,这会导致应用程序中非常有趣的文物。
奴隶们陷入困境的问题:因为许多数据库是混合在一起的 – 在数据挖掘方面有十到二十分钟的重复查询,以及没有时间的primefaces查询。 但是Slave一次只运行一个查询,所以所有的primefaces查询必须等到重写完成。
为了解决这两个问题,我在考虑像代理这样的东西,
一个仍然存在的问题,但我想考虑的是故障切换。 如果主人失败了 – 如果奴隶要承担主人的责任,而主人又回来了 – 那么奴隶会变成奴隶。
任何指向RTFM或关于这个问题的案例研究的指针将是值得欢迎的=)
编辑:谷歌search了一些,除了钨企业 – 发现dbShards和Schooner。 在深入研究的同时,有没有人有这些解决scheme的经验? 任何反馈?
检查钨企业
MySQL-MMM不是推荐的解决scheme。 请参阅: http : //www.xaprb.com/blog/2011/05/04/whats-wrong-with-mmm/即使其中一位原作者同意了评论。
干杯
编辑:哎呀,第二个链接是相同的第一个。 更正
如何处理两个服务器作为您的应用程序数据库,另一个服务器(或两个?)充当您的数据挖掘层。 你的两个“应用程序”数据库不应该(太远)落后,因为他们没有处理任何沉重的查询。 你也可以设置mysql-mmm来处理故障转移。 然后,您可以将您的应用程序指向您在负载平衡器中设置的Mysql VIP。 这个VIP有两个MMM IP。 但MMM可能会说:“嘿,方块2太落后了,我会把IP移到方块1,以便赶上。”
然后你将有两层数据库处理你的两种不同的查询types。 这些机器上的caching将针对其查询types进行优化(理论上)。
也看看一个Fusion-IO卡或Virident TachIOn。 这可能会解决问题,而无需添加一堆硬件。
为了解决复制滞后问题,我们将SSD作为主从存储器。 更快的写入时间有助于从属数据库保持运行,尽pipe从属单元的复制是单线程操作。