Amazon RDS与带有MySQL的EC2的各自优点/局限性是什么?[关闭]


132

我意识到两者之间的一些基本区别,即

  1. EC2会更便宜

  2. RDS我不需要维护

除了这两个之外,从RDS运行我的数据库相对于充当MySQL服务器的单独EC2服务器有什么优势。假设实例大小相似,那么就能够处理负载而言,两者都会受到相同的限制吗?

为了给您更多有关我的用法的信息,我有一个数据库,没有什么太大或什么东西(最大的表100万行),只是很大的SELECT量。


只需添加ec2一致的备份方法。alestic.com/2009/09/ec2-consistent-snapshot我将该工具与300GB服务器和大约5,000个数据库一起使用。此时的IOPS为3000 IOPS,因为它是从不干净的关机启动的,因此大约需要1.2个小时来启动mysql,因此mysql必须扫描每个表。
2014年

dba.stackexchange.com/questions/34525/上有一个跨站点副本,它得到了一些很好的答案。
Mark Amery

Answers:


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 RAID0。Vanilla EC2是MySQL托管的一个糟糕选择。


1
好答案。这正是我想要的:aws.typepad.com/aws/2010/10/…-感谢您将我引向正确的方向
Macgyver

好答案。您如何处理每周4小时的停机时间?
Tihom 2011年

8
关于4小时维护窗口,要了解的一件事很重要,那就是您的服务器每周不停机4小时!只有在需要维护时,他们才会进行维护。我已经使RDS服务器运行了数月,零停机时间。
efalcao 2011年

2
我们已经在REAR服务器上运行了零年的RDS服务器。一次重大故障(大约6个小时),一旦AWS自行解决,一切都会恢复正常。(我应该指出,这是一个多可用区实例,但它未能故障转移到备份中)。
cjm2671 2013年

1
@paulkon-我们不故障转移到异地副本,我们使用RDS故障转移,否则升级等回到新的主节点将变得棘手。异地副本主要用于云外备份DR,以及用于报告环境的读写拆分(我们的应用程序级别知道这些副本)。HTH
Ross

24

这篇文章中,有一个出色的基准测试:

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

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


2
发布基准很不错,但是出于真诚,作者最终承认他没有正确调整Innodb(要更改的最大参数当然是innodb_buffer_pool_size...。他没有这么做)
phil_w 2013年

12

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

RDS高可用性与主复制或主复制从复制有很大不同,并且速度慢得多。他们不使用mysql复制,而是使用某种ebs复制。因此,在发生故障转移的情况下,它将ebs安装在备份计算机上,启动mysql,等待mysql进行故障恢复(希望没有损坏的东西太糟),然后进行dns切换。

希望这对您的评估有所帮助。


1
对我来说,在具有40gb数据的数据库上添加读取从属服务器需要20分钟以上。这以及常规ec2和/或非现场中不可用的成本以及缺乏读取从属设备,这对我来说几乎是一个入门者。我想说RDS适用于不需要真正的高可用性和故障转移响应时间的小型商店。消除DBA远比恕我直言。
罗斯

好消息在这里(2020年3月)。有了Aurora,事情变得更好了。它仍然没有运行主从系统,但是由于他们创建了新的“基于云”的存储系统,故障转移现在非常快。它还提供了快速快照和备份。Aurora确实解决了RDS MySQL的许多缺点。
Jeff Whiting

6

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

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


请注意,自从我发布上述答案以来,Amazon已经为RDS实例(当前仅MySQL)引入了显式的只读副本支持。
DavidJ 2014年

5

关于维护窗口问题。如果使用Multi-AZ,则RDS将在另一个可用性区域中创建一个备用副本,这样就无需停机维护,并且可以保护自己免受区域故障的影响。

这就是我计划在下周左右执行的操作。当然,这会花更多的钱,但我还没有解决。


4

EC2上的MySQL与RDS MySQL

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

在Amazon EC2区域中复制快照

MySQL EC2中具有EBS条带化功能的RAID 0

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

MySQL在EC2上的缺点

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

RDS中可用的时间点备份

目前的IOPS低于RDS MySQL(甚至在RAID 0之后),在EC2上MySQL的10800带有6个磁盘,而在RDS MySQL上的12500 IOPS则为16KB


4

我已经尝试了RDS几个月了,这是我遇到的一些问题:

  1. 使用SQL事件探查器很棘手。由于无法将Profiler直接连接到服务器,因此必须运行一些存储过程来创建可以分析的日志文件。尽管他们提供了一些建议,但远非用户友好。我只建议您有一位经过认证的SQL专业人员来从事此类工作。

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


1

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

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


请注意,维护时段并非每周都会停机。这只是必要时进行任何维护的时间: aws.amazon.com/rds/faqs/#12 另请参见@efalcao对其上面的回答的评论。
mpdaugherty 2011年

看起来真的很酷,但是如果您在xeround.com上有大量数据,则确实是$$
csharp4me 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.