我有一个当前在 EC2 上运行的数据库。由于我必须将它移动到更大的机器上,所以出现了使用 RDS 的问题。
价钱:
我可以按需以每小时 0.132 美元的价格获得一个带有两个 SSD(每个 16GB)、两个 vCPU 和 4GB 内存的EC2实例 [1]。c3.large
最接近的(考虑价格)RDS机器的价格db.m3.medium
为每小时 0.125 美元(单可用区)[2]。这台机器具有相同数量的内存,但只有一个 vCPU [3]。此外,我必须支付存储和 io [2]的费用。
所以这两个的价格会非常相似。
EC2 的优势:
- 如前所述,多了一个 vCPU。
- 使用 EC2 时,我可以将 Write-Ahead-Log 放在第二张光盘上(向 db 写入大量内容时性能得到很大提升)。
- 我可以在我的 EC2 实例上运行pgbouncer(更高的性能,因为我可以保持连接打开)。
- 我可以编辑配置文件(最终会提高性能)
RDS 的优势:
- 自动进行每日备份。
RDS 能否涵盖 EC2 的优势(尤其是 2.)?还有其他优点吗?
像大多数事情一样,这是成本与努力/复杂性的权衡。
RDS 更简单,但灵活性较低,并且相同性能水平的成本更高。
(特别注意,没有办法复制到或复制出 RDS)
对于单个实例比较,不多,但 RDS 有很多优势,在不同区域维护具有只读副本的多可用区设置等比我更愿意在 EC2 中处理。RDS 提供大量工具,否则您必须自己动手;这总是一个优点。RDS 还为您的数据库提供了一个统一的接口,在我看来这是一个相当大的优势,并且它有助于加强数据库部署的一致性。当然,我们仍然在实例上使用 pgbouncer。
坦率地说,比起在 EC2 中,我更喜欢在 coloc 硬件上运行数据库。我讨厌在 EC2 中运行数据库。移动它们,进行转储和备份是噩梦般的,因为 ec2 的 i/o 性能简直糟糕透顶,而且购买大量 iops 非常昂贵,而且仍然无法以任何方式接近硬件性能。如果我能忍受 RDS 的限制,我会一直使用它。