我意识到两者之间的一些基本区别。
EC2会更便宜
我就不用做维护了
除了这两个以外,从 RDS 运行数据库有什么好处,而不是单独的 EC2服务器充当 MySQL 服务器。假设实例大小相似,在能够处理负载方面是否会遇到相同的限制?
为了让您了解更多关于我的使用的信息,我有一个数据库,没有太大或任何东西(最大的表100万行) ,只是高 SELECT 卷。
这周末我也有同样的问题。RDS 每周有4小时的停机时间窗口,他们在那里进行维护。如果您能够使用 EC2的微实例,那么 RDS 似乎更昂贵。(对于流量最小的测试实例也是如此)我也无法更改 RDS 实例的时区,因为我没有权限。
我现在实际上看到的是 http://xeround.com/,它是另一家公司在 EC2上的 mysql。它们不使用 InnoDB,而是使用自己的 IDG 引擎。我刚刚开始调查,但他们是在测试版,将提供500MB 的空间。
这是一个有着复杂答案的简单问题!
简而言之: 如果使用 RAID0EBS,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 托管来说,Vanilla EC2是一个糟糕的选择。
我们之所以选择使用 EC2 MySQL 实例,是因为我们的读取量很大,并且需要主从复制。当然,您可以自己旋转多个 RDS 实例并在它们之间设置 MySQL 复制,但是我们使用 Scalr.net,它为您管理使用 EC2实例的复制。
基本上,我们只是告诉 Scalr 我们需要多少 MySQL 实例来维护它们,自动设置复制,处理主服务器终止时从服务器升级的自动故障转移,等等。它同时执行 SQL 转储备份和主服务器的 EBS 卷快照。因此,当它需要创建一个新的从数据库时,它会自动临时挂载上一个主快照的 EBS 卷来初始化从数据库,然后从适当的位置开始复制。点击鼠标:) (不,我不为斯卡尔工作。如果你不想使用他们的服务,可以使用 Scalr 作为开放源码)
关于维修窗口的问题。如果您使用 Multi-AZ,那么 RDS 将在另一个可用性区域中创建一个备用副本,这样就没有停机时间进行维护,并且您可以保护自己免受区域故障的影响。
这就是我打算在下周左右做的事情。当然这会花费你更多,但是我还没有计算出来。
这篇文章有一个很好的基准:
这个基准测试非常好,因为它不仅关注理想情况(只有一个线程) ,而且还关注更现实的场景,即有50个线程访问数据库。
RDS 并不是一个真正的高可用性系统。请阅读 RDS 常见问题解答中的细则。在故障转移事件期间,故障转移可能需要3分钟。更多的亚马逊将决定它需要“升级”你的 rds 实例,并在这一点上进行故障转移,这将使你的数据库关闭“长达3分钟”(我们的经验是,它可能需要更长的时间)。
RDS 高可用性与主-主复制或主-从复制非常不同,而且速度要慢得多。他们不使用 mysql 复制,而是使用某种 ebs 复制。因此,在故障转移的情况下,它会将 ebs 挂载到备份机器上,启动 mysql,等待 mysql 执行故障恢复(希望没有太严重的损坏) ,然后执行 dns 切换。
我希望这对你的评估有帮助。
EC2上的 MySQL 与 RDS 上的 MySQL
MySQL 在 EC2上的优势 亚马逊 EC2区域间复制
跨 Amazon EC2区域复制快照
在 MySQLEC2中使用 EBS 条带的 RAID0
超过3TB 的磁盘空间(您的大小不需要这个)可以附加到 EC2上的 MySQL。
MySQL 在 EC2上的缺点
相对于 RDS 的配置、监控和维护
RDS 中可用的时间点备份
IOPS 目前低于 RDS MySQL (即使在 RAID 0之后) ,EC2上为10800,6个磁盘用于 MySQL,而 RDS MySQL 上为12500 IOPS 16KB
我已经尝试了几个月的 RDS,这里有一些问题:
使用 SQL 分析器很棘手。由于不能将探查器直接连接到服务器,因此必须运行一些存储过程来创建可以分析的日志文件。虽然他们提供了一些关于如何做到这一点的建议,但这远远不够用户友好。我只建议你有一个认证的 SQL 专业人士来做这种工作。
当 Amazon 备份您的实例时,您无法还原单个数据库。我有一个带有几个独立的客户特定数据库的 Web 应用程序,我的解决方案是启动一个运行 SQL 的 EC2实例,将其附加到生产 RDB 数据库并导入数据,然后在 EC2实例上备份它。另一个解决方案是使用第三方工具创建大量的 SQL 脚本(在应用服务器上) ,这些脚本将重新创建模式并将数据填充回恢复点。