MySQL 复制 - 一个网站,许多服务器,不同的大陆

标签 mysql replication

考虑一个相当大的网站(200 万+ 页面浏览量/米,用户很多)有 2 个前端服务器:一个在美国的前端服务器,一个在欧洲。两个专用 URL 将访问者带到其中一个服务器上,一个是法语,另一个是英语。两个站点共享完全相同的数据。

什么是最具成本效益的解决方案? (我公司使用的数据库:MySQL)

1/Amazon EC2(美国)上的单个主服务器,以及前端服务器上的从属服务器?

  • 优点:没有主-主代表,这意味着没有数据与自动增量冲突的风险和唯一列上的重复等。

  • 缺点:滞后!在欧洲写作,在美国写作不会太滞后吗? 另一个缺点可能是在 master 死亡的情况下缺乏快速 n 肮脏的解决方案。将奴隶与前台放在同一台服务器上怎么样?

2/两个 Amazon EC2 实例,一个在美国,一个在欧洲,充当主-主复制服务器。在每个前端加上两个奴隶?

  • Adv:数据的速度和安全性。当然没有负载均衡器,但通过黑客攻击将主服务器切换到另一个似乎微不足道。

  • Drwbcks:价格。以及 DB 上的腐败风险

3/还有其他解决方案吗?

因为这是我第一次在两大洲使用服务器,我非常感谢向您学习该领域的经验,无论是否包括 MySQL,是否包括 EC2。

谢谢 编码(marshal)

最佳答案

像往常一样,我要说的内容取决于您的应用程序、它如何使用数据库等。您需要问自己:

  • 如果您使用现成的软件,其他人在这种情况下做了什么?
  • 应用是否需要处理整个数据集,还是可以分区?
  • 您的应用是否专为处理多主复制而构建(通常意味着使用自动增量 pk)
  • 更新/删除冲突的可能性有多大?费用是多少?
  • 读写比率是多少?写作的本质是什么?它们通常是更新操作还是追加操作?

我假设法语服务器在欧洲,而英语服务器在美国?如果您可以对数据进行分区,以便法语站点使用一个数据库而英语站点使用另一个数据库,那么您的情况会更好。即使两个站点都访问两个数据库,因为您不必担心冲突。您甚至可以在每个主服务器上运行两个 mysql 实例,并为两者执行多主复制。

如果你不能分区,我可能会选择#2,但我会指定其中一台机器作为“真正的”主机并将所有写入发送到它以帮助避免数据困惑。这样就可以在紧要关头轻松切换。

如果您对成本很敏感并且打算在前端服务器上运行副本,那么只需在前端服务器上运行主数据库即可。你以后总是可以把它拉下来。在读取负载相同的情况下,副本通常比主服务器具有更高的 CPU/IO 成本:它们必须串行执行写入,这确实会把事情搞砸。

另外,不要为您的数据库使用 m1.small 实例。或者至少留意你的表现。 m1.smalls 的功率明显不足,如果您观看 top,您会注意到您的 CPU 时间的很大一部分被管理程序窃取了。我推荐 c1.medium。

关于MySQL 复制 - 一个网站,许多服务器,不同的大陆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/431025/

相关文章:

mysql - 如何覆盖日期的转义方式?

mysql - 表行的惰性删除

java - Ehcache 复制缓存 RMI Bootstrap

php - PDO : How different is mysql from postgresql

c# - 如何查询 UWP 应用程序中的特定列?

php - PHP警告:mysqli_num_rows()和数据库创建

hadoop - 更改HDFS中现有文件的复制

mysql - 如何使我的 MySQL 数据库始终可用?需要一些专家数据库建议!

mysql - 从mysql表中删除旧记录但保留备份

mysql - MySQL scaling新手-如何拥有2台master-write服务器?