Amazon RDS 与使用 MySQL 的 EC2 各自的优势/限制是啥? [关闭]
Posted
技术标签:
【中文标题】Amazon RDS 与使用 MySQL 的 EC2 各自的优势/限制是啥? [关闭]【英文标题】:What are the respective advantages/limitations of Amazon RDS vs. EC2 with MySQL? [closed]Amazon RDS 与使用 MySQL 的 EC2 各自的优势/限制是什么? [关闭] 【发布时间】:2011-06-15 22:19:55 【问题描述】:我意识到两者之间的一些基本区别,即
EC2 会更便宜
RDS 我不必进行维护
除了这两个之外,从 RDS 运行我的数据库相对于充当 mysql 服务器的单独 EC2 服务器是否有任何优势。假设实例大小相似,在处理负载方面是否会遇到相同的限制?
为了给你更多关于我使用的信息,我有一个数据库,没有太大或任何东西(最大的表 100 万行),只是高 SELECT 量。
【问题讨论】:
只是添加了 ec2 一致的备份方法。 alestic.com/2009/09/ec2-consistent-snapshot 我将该工具与 300gb 服务器和大约 5,000 个数据库一起使用。此时,使用 3000 IOPS 卷启动 mysql 大约需要 1.2 小时,因为它是从不干净的关机开始的,因此 mysql 必须扫描每个表。 dba.stackexchange.com/questions/34525/… 有一个跨站点副本,得到了一些很好的答案。 【参考方案1】:我已经试用 RDS 几个月了,以下是我遇到的一些问题:
使用 SQL 分析器很棘手。由于无法将探查器直接连接到服务器,因此必须运行一些存储过程来创建可以分析的日志文件。虽然他们提供了一些关于如何完成的建议,但它远非用户友好。我只建议您让经过认证的 SQL 专业人员来从事此类工作。
在 Amazon 备份您的实例时,您无法恢复单个数据库。我有一个包含多个单独的客户特定数据库的 Web 应用程序,我的解决方案是启动一个运行 SQL 的 EC2 实例,以附加到生产 RDB 数据库并导入数据,然后将其备份到 EC2 实例上。另一个解决方案是使用第 3 方工具创建大量 SQL 脚本(在应用服务器上),该脚本将重新创建架构并将数据填充回还原点。
【讨论】:
【参考方案2】: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
【讨论】:
【参考方案3】:RDS 并不是真正的高可用性系统。阅读 RDS 常见问题解答中的细则。在故障转移事件期间,故障转移最多可能需要 3 分钟。其他亚马逊将决定它需要“升级”您的 rds 实例并在此时进行故障转移,这将使您的数据库停机“最多 3 分钟”(我们的经验是它可能需要更长的时间)。
RDS 高可用性与主 - 主或主 - 从复制非常不同,并且速度要慢得多。他们不使用 mysql 复制,而是使用某种 ebs 复制。所以在故障转移的情况下,它会在备份机器上挂载 ebs,启动 mysql,等待 mysql 进行故障恢复(希望没有损坏太糟糕),然后进行 dns 切换。
希望这对您的评估有所帮助。
【讨论】:
在具有 40gb 数据的数据库上添加读取从站对我来说花费了 20 分钟。这以及常规 ec2 和/或异地不可用中读取从属的成本和缺乏对我来说几乎是一个非首发。我会说 RDS 适合不需要真正的高可用性和故障转移响应时间的小商店。恕我直言,消除 DBA 比消除任何事情都重要。 好消息在这里(2020 年 3 月)。有了 Aurora,事情变得更好了。它仍然没有运行主从系统,但是因为他们创建了一个新的“基于云”的存储系统,所以故障转移现在非常快。它还提供快速快照和备份。 Aurora 确实解决了 RDS MySQL 的许多缺点。【参考方案4】:在this post 中有一个很好的基准:
在小型 EC2 + EBS 上运行 MySql 在小型 EC2 + EBS + 调整 MySql 参数上运行 MySql 小型 RDS基准测试非常好,因为它不仅关注理想条件(只有一个线程),还关注更现实的场景,有 50 个线程访问数据库。
【讨论】:
发布基准测试很好,但作者真诚地承认最后他没有正确调整 Innodb(要更改的最大参数当然是 innodb_buffer_pool_size.... 他没有) 【参考方案5】:关于维护期问题。如果您使用多可用区,则 RDS 将在另一个可用区中创建备用副本,这样就没有停机时间进行维护,并且您可以保护自己免受区域故障的影响。
这就是我打算在接下来的一周左右做的事情。当然,这会花费你更多,但我还没有解决这个问题。
【讨论】:
【参考方案6】:我们选择使用 EC2 MySQL 实例是因为我们的读取量很大并且需要主从复制。当然,您可以启动多个 RDS 实例并自己在它们之间设置 MySQL 复制,但我们使用 Scalr.net,它使用 EC2 实例为您管理。
基本上,我们只是告诉 Scalr 我们需要多少 MySQL 实例来保持它们的运行,自动设置复制,在主服务器终止时处理从服务器升级到主服务器的自动故障转移等。它同时执行 SQL 转储备份和 EBS主服务器的卷快照。所以,当它需要创建一个新的slave时,它会自动临时挂载最后一个master快照的EBS卷来初始化slave DB,然后从适当的点开始复制。所有指向并单击:) (不,我不为 Scalr 或任何东西工作。如果您不想使用他们的服务,Scalr 可以作为开源软件使用)
【讨论】:
请注意,自从我发布上述答案以来,亚马逊已经为 RDS 实例(目前仅 MySQL)引入了显式的只读副本支持。【参考方案7】:这是一个简单的问题,答案却很复杂!
简而言之:如果您使用 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 托管的糟糕选择。
【讨论】:
好答案。这正是我想要的:aws.typepad.com/aws/2010/10/… - 感谢您带领我朝着正确的方向前进 好答案。您如何处理每周 4 小时的停机时间? 关于 4 小时维护窗口的重要信息是您的服务器每周不会关闭 4 小时!如果需要维护,他们就会进行维护。我已经让 RDS 服务器运行了几个月,停机时间为零。 我们的 RDS 服务器已运行多年,停机时间为零。一次大停电(约 6 小时),AWS 自行解决后一切恢复正常。 (我应该指出这是一个多可用区实例,但它无法故障转移到备份)。 @paulkon - 我们不会故障转移到异地副本,我们使用 RDS 故障转移,否则升级等回到新的主服务器会变得很棘手。异地副本主要用于云外备份DR以及报告环境的读/写拆分(我们的应用程序级别知道它们)。 HTH【参考方案8】:这个周末我也有同样的问题。 RDS 每周有 4 小时的停机时间窗口进行维护。如果您可以摆脱 EC2 的微型实例,RDS 似乎更昂贵。 (对于流量最小的测试实例也是如此)我也无法更改 RDS 实例的时区,因为我没有权限。
我现在实际上正在查看http://xeround.com/,它是另一家公司在 EC2 上的 mysql。他们不使用 InnoDB,而是拥有自己的名为 IDG 的引擎。我刚刚开始调查,但它们处于测试阶段,将提供 500MB 的空间。
【讨论】:
注意维护窗口不是每周停机;这只是在需要时进行任何维护的时候:aws.amazon.com/rds/faqs/#12 另请参阅@efalcao 对上面他的回答的评论。 看起来很酷,但如果您在 xeround.com 上拥有任何数量的数据,那真的是 $$以上是关于Amazon RDS 与使用 MySQL 的 EC2 各自的优势/限制是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 MySQL Workbench 通过 EC2 实例连接到 Amazon RDS 实例
使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例