代码之家  ›  专栏  ›  技术社区  ›  Mike Crowe

地理冗余和MySQL复制

  •  1
  • Mike Crowe  · 技术社区  · 16 年前

    我有一个相当简单的网站,使用灯配置,每天点击20万次(3-5次/秒)。主机有些不稳定(读:便宜),所以我们想增加第二个主机以保证正常运行时间(我不认为这是任务关键,但更麻烦的预防)。

    MySQL的空闲时间大约为200qps,有时达到450次峰值。

    我对master master和maatkit设置有一些经验,所以我打算在第二个位置复制站点,使用master master replication,并使用maatkit和监视slave lag等验证数据。

    然而,在阅读关于这个设置的所有可怕警告时,我试图评估这是否是正确的做法。什么是替代架构?

    附加问题:假设您有两个服务器,一个位于东海岸,另一个位于西海岸。对于那些数据库,负载平衡的合理策略是什么?您是否可以让西海岸的Apache服务器访问东海岸的MySQL?这真的是一个选择吗?我以为迟到会毁了演出…

    有什么想法吗? 蒂亚 迈克

    2 回复  |  直到 13 年前
        1
  •  2
  •   Michael Robinson    13 年前

    美国大约有50毫秒,所以考虑到每个HTTP查询执行40-90个MySQL查询,您可以预期HTTP查询的延迟至少增加2-4.5秒。这忽略了转移大量有效载荷所需的时间。你不想为这个应用做跨大陆的mysql。

    避免跨大陆mysql查询的另一个原因是两个master可能不同步,因此如果您循环查询acorss,两个数据库的用户可能会看到不一致的数据并感到困惑。但是,如果您的本地数据库是硬的,那么回退到远程数据库是合理的。在这种情况下,您还希望将流量从本地Web服务器转移开,以避免前面提到的延迟攻击。

    您需要确保用户坚持使用同一个Apache服务器,以便他们获得一致的数据视图。一个简单的方法是将用户从www.yoursite.com重定向到server1.yoursite.com和server2.yoursite.com,确保所有URL都是相对的。如果一台服务器出现故障,您可以重新导入DNS,在这之前,用户可能会一直刷新www.yoursite.com(这将被用作DNS循环),直到获得另一台服务器。这样做的一个危险是,用户会将server1.yoursite.com加入书签。

        2
  •  0
  •   Siddhartha Singh    15 年前

    保证的正常运行时间可以通过在同一站点使用虚拟IP的活动备用方法来完成。您甚至可以将不同的站点配置为活动备用。地理冗余是另一个问题。