我意识到两者之间的一些基本区别,即
EC2会更便宜
RDS我不需要维护
除了这两个之外,从RDS运行我的数据库相对于充当MySQL服务器的单独EC2服务器有什么优势。假设实例大小相似,那么就能够处理负载而言,两者都会受到相同的限制吗?
为了给您更多有关我的用法的信息,我有一个数据库,没有什么太大或什么东西(最大的表100万行),只是很大的SELECT量。
我意识到两者之间的一些基本区别,即
EC2会更便宜
RDS我不需要维护
除了这两个之外,从RDS运行我的数据库相对于充当MySQL服务器的单独EC2服务器有什么优势。假设实例大小相似,那么就能够处理负载而言,两者都会受到相同的限制吗?
为了给您更多有关我的用法的信息,我有一个数据库,没有什么太大或什么东西(最大的表100万行),只是很大的SELECT量。
Answers:
这是一个简单的问题,答案很复杂!
简而言之:如果使用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托管的一个糟糕选择。
在这篇文章中,有一个出色的基准测试:
基准测试非常好,因为它不仅关注理想条件(仅一个线程),而且关注更现实的场景(数据库有50个线程)。
RDS并不是真正的高可用性系统。阅读RDS常见问题解答中的细则。在故障转移事件期间,最多可能需要3分钟才能进行故障转移。其他亚马逊将决定需要“升级”您的rds实例并进行故障转移,这将使您的数据库关闭“最多3分钟”(我们的经验是,这可能需要更长的时间)。
RDS高可用性与主复制或主复制从复制有很大不同,并且速度慢得多。他们不使用mysql复制,而是使用某种ebs复制。因此,在发生故障转移的情况下,它将ebs安装在备份计算机上,启动mysql,等待mysql进行故障恢复(希望没有损坏的东西太糟),然后进行dns切换。
希望这对您的评估有所帮助。
我们选择使用EC2 MySQL实例,因为我们的读取量很大并且需要主从复制。当然,您可以启动多个RDS实例,并在它们之间设置MySQL复制,但是我们使用Scalr.net,它使用EC2实例为您管理该实例。
基本上,我们只是告诉Scalr我们想要多少个MySQL实例来保持它们,自动执行复制设置,如果主服务器终止则处理从属升级到主服务器的自动故障转移等。它会执行SQL转储备份和EBS卷快照大师。因此,当需要创建新的从属服务器时,它将自动临时装载最后一个主快照的EBS卷以初始化从属数据库,然后从适当的位置开始复制。只需单击即可:)(不,我不为Scalr或任何其他公司工作。如果您不想使用Scalr的服务,则可以将其作为开源使用)
我已经尝试了RDS几个月了,这是我遇到的一些问题:
使用SQL事件探查器很棘手。由于无法将Profiler直接连接到服务器,因此必须运行一些存储过程来创建可以分析的日志文件。尽管他们提供了一些建议,但远非用户友好。我只建议您有一位经过认证的SQL专业人员来从事此类工作。
当Amazon备份您的实例时,您将无法还原单个数据库。我有一个Web应用程序,其中包含几个单独的客户特定数据库,而我的解决方案是启动一个运行SQL的EC2实例,以附加到生产RDB数据库并导入数据,然后将其备份到EC2实例上。另一个解决方案是使用第三方工具创建一个大型SQL脚本(在应用服务器上),该脚本将重新创建架构并将数据填充回还原点。
这个周末我有同样的问题。每周进行维护的RDS都有4小时的停机时间窗口。如果您可以使用EC2的微型实例,则RDS似乎更昂贵。(对于流量最小的测试实例而言,这是正确的),因为我没有权限,所以我也无法更改RDS实例的时区。
我现在实际上正在查看http://xeround.com/,这是另一家公司在EC2上使用的mysql。他们不使用InnoDB,而是拥有自己的名为IDG的引擎。我刚刚开始调查,但是它们位于BETA中,将提供500MB的空间。