Amazon RDS与使用MySQL的EC2分别有哪些优点/限制?

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

  1. EC2将会更便宜

  2. RDS我不用做维护

除了那两个,从RDS运行我的数据库,而不是一个单独的EC2服务器充当MySQL服务器有什么优势。 假设类似的实例大小,在处理负载方面都会遇到相同的局限性?

为了给你一点点关于我的使用的信息,我有一个数据库,没有什么太大或什么(最大的表100万行),只是高select量。

这是一个非常复杂的答案一个简单的问题!

简而言之:如果使用RAID0 EBS,EC2将提供最佳性能。 做RAID0 EBS需要相当多的维护开销,例如:

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

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

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

RDS将提供非常好的(尽pipe不是最大的)性能。 pipe理控制台非常棒,升级实例很简单。 高可用性和只读奴隶是一个点击即可。 这真是太棒了。

简短的回答:去RDS。 仍然在围栏上? 去与RDS! 如果你喜欢头痛,为了获得最大的性能,你可以考虑EC2 + EBS RAID 0。对于MySQL托pipe,Vanilla EC2是一个糟糕的select。

在这篇文章中有一个很好的基准:

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

基准是非常好的,因为它不仅仅集中在理想的条件下(只有一个线程),而且在更现实的情况下也是如此,有50条线程触及数据库。

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

RDS高可用性与主 – 主或主 – 从复制非常不同,速度要慢得多。 他们不使用mysql复制,但使用某种ebs复制。 所以在一个故障转移的情况下,它会挂载在备份机上的ebs,启动mysql,等待mysql做失败恢复(希望没有损坏太坏),然后做一个DNS切换。

我希望这可以帮助你与你评估。

我们select使用EC2 MySQL实例,因为我们有一个高读取量,需要主从复制。 当然,你可以创build多个RDS实例并自己设置MySQL之间的复制,但是我们使用Scalr.net,它使用EC2实例pipe理它。

基本上,我们只是告诉Scalr有多lessMySQL我们想要的实例保持它们,自动化复制的设置,处理自动故障转移的奴隶升迁主如果主要终止等。它做SQL转储备份和EBS卷快照大师。 所以,当需要创build一个新的从设备时,它会自动临时挂载最后一个主设备快照的EBS卷,以初始化从设备数据库,然后从适当的点开始复制。 所有的点击:)(不,我不为Scalr或任何工作。Scalr是可用的开源如果你不想使用他们的服务)

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

这就是我打算在接下来的一周左右做的事情。 当然,这会花费你更多,但我还没有工作过。

我一直在试用RDS几个月,这里有一些问题:

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

  2. 而亚马逊备份你的实例,你不能恢复个人数据库。 我有一个Web应用程序和几个独立的客户特定的数据库,我的解决scheme是启动一个EC2实例,并在其上运行SQL,以附加到生产RDB数据库并导入数据,然后将其备份在EC2实例上。 另一种解决scheme是使用第三方工具创build一个海量的SQL脚本(在应用程序服务器上),该脚本将重新创build模式并将数据填充到还原点。

MySQL上的EC2与RDS MySQL

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

跨Amazon EC2区域复制快照

在EC2中使用EBS分条的RAID 0

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

MySQL在EC2上的缺点

configuration,监控和维护相比RDS

RDS中可用的时间点备份

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

我这个周末也有同样的问题。 RDS每周有4个小时的停机时间窗口进行维护。 RDS似乎更昂贵,如果你可以摆脱一个EC2的微观实例。 (对于stream量最小的testing实例,这是真的)我也无法更改RDS实例的时区,因为我没有权限。

我现在正在考虑http://xeround.com/这是另一家公司在EC2上的mysql。; 他们不使用InnoDB,而是使用自己的IDG引擎。 我刚刚开始调查,但他们在testing,并会给500MB的空间。

只需在ec2上添加一致的备份方法即可。 http://alestic.com/2009/09/ec2-consistent-snapshot我用300GB的服务器和大约5000个数据库的工具。; 此时3000 IOPS的卷需要大约1.2小时才能启动mysql,因为它从一个不干净的closures开始,所以mysql必须扫描每个表。