Amazon RDS与EC2与MySQL相应的优势/局限是什么?

时间:2011-01-26 15:23:40

标签: mysql amazon-ec2 amazon-rds

我意识到两者之间存在一些基本差异,即

  1. EC2会更便宜

  2. RDS我不需要做维护

  3. 除了这两个之外,从RDS运行我的数据库是否有任何优势,而不是作为MySQL服务器的单独EC2服务器。假设类似的实例大小,在能够处理负载方面都会遇到相同的限制吗?

    为了向您提供有关我使用的更多信息,我有一个数据库,没有太大或任何东西(最大表100万行),只有高SELECT卷。

8 个答案:

答案 0 :(得分:135)

这是一个简单的问题,答案很复杂!

简而言之:如果您使用RAID0 EBS,EC2将提供最高性能。执行RAID0 EBS需要相当大的维护开销,例如:

http://alestic.com/2009/06/ec2-ebs-raid

http://alestic.com/2009/09/ec2-consistent-snapshot

没有RAID0 EBS的EC2将提供糟糕的I / O性能,因此它甚至不是真正的选择。

RDS将提供非常好(尽管不是最大)的开箱即用性能。管理控制台太棒了,升级实例很容易。点击即可获得高可用性和只读从站。这真的太棒了。

简短回答:使用RDS。还在围栏上?跟RDS一起去!如果您喜欢头痛并调整最后一点以获得最佳性能,那么您可以考虑使用EC2 + EBS RAID 0. Vanilla EC2是MySQL托管的一个糟糕选择。

答案 1 :(得分:24)

this post中,有一个很好的基准:

  • 在小型EC2 + EBS上运行MySql
  • 在小型EC2 + EBS上运行MySql +调整MySql参数
  • 小型RDS

基准测试非常好,因为它不仅仅关注理想条件(只有一个线程),而且更集中在更现实的场景中,有50个线程命中数据库。

答案 2 :(得分:12)

RDS并不是真正的高可用性系统。阅读RDS常见问题解答中的细则。在故障转移事件期间,故障转移最多可能需要3分钟。额外的亚马逊将决定它需要“升级”您的rds实例并在那时进行故障转移,这将使您的数据库停机“最多3分钟”(我们的经验是它可能需要更长的时间)。

RDS高可用性与主 - 主或从 - 主复制非常不同,而且速度要慢得多。它们不使用mysql复制,而是使用某种ebs复制。所以在故障转移的情况下,它会将ebs挂载到备份机器上,启动mysql,等待mysql进行故障恢复(希望没有任何损坏太糟糕),然后再进行dns切换。

我希望这可以帮助您评估。

答案 3 :(得分:6)

我们选择使用EC2 MySQL实例,因为我们拥有高读取量并需要主从复制。当然,您可以自己启动多个RDS实例并在它们之间设置MySQL复制,但我们使用Scalr.net,它使用EC2实例为您管理。

基本上,我们告诉Scalr我们需要多少MySQL实例来保持它们,自动化复制设置,如果主站终止等,则处理从站升级到主站的自动故障转移等。它同时执行SQL转储备份和EBS主人的卷快照。因此,当需要创建新的从属服务器时,它会自动临时安装最后一个主快照的EBS卷以初始化从属数据库,然后从适当的点开始复制。所有点击:) (不,我不适用于Scalr或其他任何东西。如果你不想使用他们的服务,Scalr可以作为开源使用)

答案 4 :(得分:5)

关于维护窗口问题。如果您使用多可用区,那么RDS将在另一个可用区创建一个备用副本,这样就不会有维护停机时间,您可以保护自己免受区域故障的影响。

这就是我计划在下周左右做的事情。当然它会花费你更多但我还没有那么努力。

答案 5 :(得分:4)

关于EC2的MySQL与RDS MySQL

MySQL在EC2上的优势 Amazon EC2区域间复制

跨Amazon EC2区域复制快照

在MySQL EC2中使用EBS Striping的RAID 0

超过3TB的磁盘空间(您的大小不需要这个)可以附加在EC2上的MySQL上。

MySQL在EC2上的缺点

与RDS相比的配置,监控和维护

RDS中可用的时间点备份

IOPS小于RDS MySQL(即使在RAID 0之后)当前,10800在EC2上有6个磁盘用于MySQL,而在RDS MySQL上有12500 IOPS 16KB

答案 6 :(得分:4)

我已经尝试了几个月的RDS,这里有一些问题:

  1. 使用SQL分析器很棘手。由于无法将Profiler直接连接到服务器,因此必须运行一些存储过程来创建可以分析的日志文件。虽然他们提供了一些关于如何完成的建议,但它远非用户友好。我只建议你有一个经过认证的SQL专业人员做这种工作。

  2. 当Amazon备份您的实例时,您无法还原单个数据库。我有一个带有几个独立的客户特定数据库的Web应用程序,我的解决方案是启动运行SQL的EC2实例,以附加到生产RDB数据库并导入数据,然后将其备份到EC2实例上。另一种解决方案是使用第三方工具创建一个庞大的SQL脚本(在应用服务器上),它将重新创建模式并将数据填充回还原点。

答案 7 :(得分:1)

本周末我有同样的问题。 RDS每周有4小时的停机时间窗口进行维护。如果您可以使用EC2的微型实例,RDS似乎更昂贵。 (对于流量最小的测试实例也是如此)我也无法更改RDS实例的时区,因为我没有权限。

我现在实际上正在查看http://xeround.com/,这是另一家公司在EC2上的mysql。他们不使用InnoDB,而是拥有自己的IDG引擎。我刚刚开始调查,但他们在BETA,并将提供500MB的空间。