将数据库放在 EC2 或 RDS 上?

Put database on EC2 or RDS?

我是 AWS 的新手,我有一个不断发展的网站,它连接到许多 API,我有一个不断增长的数据库,我只是不想达到系统崩溃的地步。

所以我有:

  1. 网站
  2. 在网站内部,有一个连接到大型数据库的应用程序,它首先对信息进行排序,然后将客户重定向到一个处理页面,该页面将连接到 10 个 API
  3. 一个管理面板,您可以在其中重新运行所有应用程序或向 API 发送进一步的请求

现在我的问题是: 数据库放在同一个 EC2 服务器上更好还是单独放在 RDS 上更好?

什么最适合我的成长项目?

首先,从您的主网站实例卸载数据库具有优势。您可以对单独的实体进行基准测试并决定扩展哪个实体。

对于 24x7 服务,请为您的数据库使用 RDS。将来您可以轻松地创建自动故障转移恢复(尽管仍然需要一些干预)。您可以独立于您的主要应用程序创建数据库快照备份。

如果您只需要每两周一次的服务并且数据恢复并不重要,那么将 RDB 放在 EC2 中可能会为您节省一些钱。 (更新):现在 AWS 允许您临时 "STOP" RDS 数据库并在需要的服务器上启动它,但是,RDS 将在 7 天后自动启动。如果您按需使用昂贵的 RDS 实例,请确保设置通知来处理这种情况。

其次,当您从应用程序服务器卸载 RDB 时,您将获得额外的灵活性来平衡您的网站。您可以选择使用 ELB 甚至 SPOT 实例。

对于新管理员,使用 SSD 驱动程序(例如 m3.large 2x32GB SSD)设置 AWS EC2 RDBMS 非常诱人,因为您不需要处理 EBS IOPS 调整,临时 SSD 驱动器将提供与该 SSD 关联的最大 IOPS。但是,您无法扩展 SSD。对于 RDS,您使用 EBS,当您遇到 IOPS 瓶颈时,您可以扩展磁盘 space 以获得更多 IOPS,或者提供额外的 IOPS。

您应该将您的 AWS 设置设计为临时的,EC2 实例应该能够在不影响您的站点的情况下被删除。这与直接在 EC2 实例上托管数据库形成对比,因此简而言之,您绝对应该使用 RDS。

  1. 为您的数据库使用单独的服务器,来自 this thread

    Scalability. Keeping your web server stateless allows you to scale your web servers horizontally pretty much effortlessly. It is very difficult to horizontally scale a database server.

  2. 除非您有非常具体的需求(例如:通过 ssh 访问数据库实例),否则 Amazon RDS 几乎总是比自行管理数据库主机更好。 Amazon RDS Product Page 具有全面的功能列表。
    TL;DR 使用 Amazon RDS,您会自动获得:

    • 备份
    • 时间点恢复
    • 故障转移(使用多可用区)
    • 软件补丁
    • 监控和警报