136

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

  1. EC2 会更便宜

  2. RDS 我不必进行维护

除了这两个之外,从 RDS 运行我的数据库与充当 MySQL 服务器的单独 EC2 服务器相比有什么优势。假设实例大小相似,两者在处理负载方面是否会遇到相同的限制?

为了给你更多关于我使用的信息,我有一个数据库,没有太大或任何东西(最大的表 100 万行),只是高 SELECT 量。

4

8 回答 8

137

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

简而言之:如果您使用 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。香草 EC2 是 MySQL 托管的糟糕选择。

于 2011-01-26T16:06:15.203 回答
26

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

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

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

于 2011-06-16T16:26:21.633 回答
14

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

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

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

于 2011-12-14T18:49:25.497 回答
7

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

基本上,我们只是告诉 Scalr 我们需要多少 MySQL 实例来保持它们的运行,自动设置复制,在主服务器终止时处理从服务器升级到主服务器的自动故障转移等。它同时执行 SQL 转储备份和 EBS 卷快照大师。所以,当它需要创建一个新的slave时,它会自动临时挂载最后一个master快照的EBS卷来初始化slave DB,然后从适当的点开始复制。全部点击:)(不,我不为 Scalr 或任何东西工作。如果您不想使用他们的服务,Scalr 可以作为开源使用)

于 2011-02-10T18:16:52.033 回答
5

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

这就是我计划在接下来的一周左右做的事情。当然,这会花费你更多,但我还没有解决这个问题。

于 2011-04-23T08:47:21.997 回答
4

EC2 上的 MySQL 与 RDS MySQL

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

跨 Amazon EC2 区域复制快照

MySQL EC2 中带有 EBS 条带化的 RAID 0

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

EC2上MySQL的缺点

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

RDS 中可用的时间点备份

目前 IOPS 低于 RDS MySQL(即使在 RAID 0 之后),EC2 上的 MySQL 10800 和 6 个磁盘,而 RDS MySQL 上的 12500 IOPS 16KB

于 2013-04-23T06:12:47.407 回答
4

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

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

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

于 2013-10-25T21:48:34.150 回答
1

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

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

于 2011-01-26T15:35:14.113 回答