我在 AWS EC2 上的 EBS Ubuntu 实例上有一个简单的 LAMP 堆栈。
它已经运行了一段时间了,但现在我的硬盘空间开始不足了。
我有什么选择?
我已经附加了一个 EBS 卷并将日志等移动到其中,但 MySQL 数据库仍在继续增长。
我是否应该将数据库移动到附加卷?不过,我对此非常担心。数据库速度目前是 LAMP 堆栈中的性能瓶颈,将数据库移动到 EBS 可能会造成相当大的性能损失(如果将文件移入和移出卷的速度可以作为参考的话?)
答案1
您绝对应该将数据库移动到 EBS 块。这些卷不仅比本地存储更快,而且它们也是持久的。因此,如果/当 EC2 实例停止时,该实例的根文件系统将保持完整,并且在实例重新启动时将继续可用。
在几乎所有情况下,Amazon EBS 卷的延迟和吞吐量都比 Amazon EC2 实例存储好得多。您还可以将多个卷附加到一个实例,并在这些卷之间进行条带化。这是提高 I/O 速率的一种方法,尤其是当您的应用程序对数据集执行大量随机访问时。
确切的性能取决于应用程序(例如随机 I/O 与顺序 I/O 或大请求大小与小请求大小),因此最佳衡量标准是针对卷对您的实际应用程序进行基准测试。由于 Amazon EBS 卷需要网络访问,因此您将在更大的实例中看到更快、更一致的吞吐量性能。
此后,如果您仍然遇到 I/O 瓶颈,您可能需要考虑使用亚马逊 RDS。
答案2
这里有两个选项:
选项1:
将 MySQL 数据库从 EC2 移至远程数据传送系统。它仍然运行 MySQL,你甚至可以选择版本。他们提供移民帮助。
缺点:您需要为额外的实例付费,因为 RDS 实例的收费与 EC2 相同。您还必须忍受一些停机时间。
选项 2:
增加 EBS 卷的大小。
通过 Web 界面,您可以通过以下方式执行此操作: - 停止实例 - 创建卷的快照 - 从快照创建卷,并在提示时指定更大的大小 - 从卷创建 AMI - 启动新 AMI 的实例
但是,我遇到了无法启动新实例的问题。通过 API,您可以按照以下步骤执行此操作Eric Hammond 的说明在这里。
缺点:再次,停机。