EC2比较便宜。
RDS无需进行维护。
为了让你更了解我的使用情况,我有一个数据库,不算太大(最大表格有100万行),只有高SELECT量。
EC2比较便宜。
RDS无需进行维护。
这是一个简单的问题,但答案却相当复杂!
简而言之:如果您选择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。对于MySQL托管来说,原始的EC2是一个糟糕的选择。
在这篇文章中,对以下几种情况进行了优秀的基准测试:
该基准测试非常好,因为它不仅关注理想条件(只有一个线程),还涵盖更加现实的场景,即50个线程同时查询数据库。
RDS并不是一个真正的高可用性系统。请仔细阅读RDS FAQ中的细则。在故障切换事件中,可能需要最多3分钟才能完成切换。此外,亚马逊会在某个时间决定需要“升级”您的RDS实例,并进行故障转移,这将使您的数据库停机“长达3分钟”(我们的经验是它可能需要更长时间)。
RDS高可用性与主 - 主或主 - 从复制非常不同,且速度较慢。它们不使用MySQL复制,而是使用某种EBS复制。因此,在故障转移情况下,它会在备份机器上挂载EBS,启动MySQL,等待MySQL完成故障恢复(希望没有出现太严重的损坏),然后进行DNS切换。
我希望这些对您的评估有所帮助。
关于维护窗口的问题。如果您使用Multi-AZ,则RDS将在另一个可用区创建一个备用副本,以便在维护期间没有停机时间,并保护自己免受区域故障。
这就是我计划在接下来的一周左右要做的事情。当然,这将会增加成本,但我还没有计算出具体的费用。
EC2上的MySQL vs RDS MySQL
在EC2上使用MySQL的优势
在EC2上使用MySQL的缺点
使用SQL Profiler很棘手。由于您无法直接连接profiler到服务器,您必须运行一些存储过程来创建一个日志文件以供分析。虽然他们提供了一些关于如何操作的建议,但它远非用户友好。我建议只有持有认证的SQL专业人员才能做这种工作。
虽然Amazon备份您的实例,但您不能恢复单个数据库。我有一个具有几个独立客户特定数据库的Web应用程序,我的解决方案是启动一个运行SQL的EC2实例,附加到生产RDB数据库并导入数据,然后在EC2实例上进行备份。另一个解决方案是使用第三方工具,在应用程序服务器上创建一个庞大的SQL脚本,以便将模式和数据重新生成到某个还原点。
我在上周末也有同样的问题。每周RDS会有4小时的停机时间进行维护。如果您可以使用EC2的微实例,那么RDS似乎更昂贵。(这对于最小流量的测试实例来说是正确的)我也无法更改RDS实例的时区,因为我没有权限。
现在我正在看另一家公司提供的基于EC2的mysqlhttp://xeround.com/。他们不使用InnoDB,而是有自己的引擎称为IDG。我刚开始调查它,但他们还处于BETA阶段,并将提供500MB的空间。