我有一个相当简单的站点,使用 LAMP 配置每天可获得 20 万次点击(3-5 次点击/秒)。主机有点不稳定(读作:便宜),所以我们想添加第二台主机以保证正常运行时间(我不会将此称为关键任务,但更多的是防止烦恼)。
MySQL 的空闲速度约为 200 qps,有时会达到 450。
我在主-主和 maatkit 设置方面有一些经验,所以我打算在第二个位置复制站点,使用主-主复制,并使用 maatkit 验证数据并监控 slave-lag 等。
但是,在阅读有关此设置的所有可怕警告时,我正在尝试评估这是否是正确的举动。什么是替代架构?
附加问题:假设您有 2 台服务器,一台在东海岸,一台在西海岸。为这些负载平衡数据库的合理策略是什么?你会让西海岸的apache服务器访问东海岸的mysql吗?这真的是一个选择吗?我认为延迟会降低性能...
有什么想法吗? TIA 迈克
最佳答案
美国的延迟大约为 50 毫秒,因此假设您在每个 http 查询中执行 40-90 个 mysql 查询,您预计 http 查询的延迟至少会增加 2-4.5 秒。这忽略了传输任何大负载所需的时间。你不想为这个应用程序做跨大陆的 mysql。
避免跨大陆 mysql 查询的另一个原因是两个主数据库可能不同步,因此如果您跨两个数据库进行循环查询,用户可能会看到不一致的数据并感到困惑。但是,如果您的本地数据库出现故障,回退到远程数据库是合理的。在这种情况下,您还希望将流量从本地网络服务器转移出去,以避免上述延迟影响。
您需要确保用户坚持使用同一个 apache 服务器,以便他们获得一致的数据 View 。一种简单的方法是将用户从 www.yoursite.com 重定向到 server1.yoursite.com 和 server2.yoursite.com,确保所有 URL 都是相对的。如果一台服务器出现故障,您可以重新指向 DNS,在此之前,用户可能会不断刷新 www.yoursite.com(这将用作 DNS 循环),直到他们获得另一台服务器。这样做的一个危险是用户会将 server1.yoursite.com 添加为书签。
关于mysql - 地理冗余和 MySQL 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1020469/