我正在尝试在 EBS 支持的 AMI 上安装 MySQL。
EBS 支持的 AMI 是指存储在 EBS 而不是 S3 中的 AMI。
我选择了一个由 Amazon/Ubuntu 提供的现有 EBS 支持的 Ubuntu AMI,我启动它,对其进行自定义并创建一个新的 AMI,这特定于我的需求。应该使用什么过程来创建这个新的 AMI?我应该小心任何公钥和 .SSH 文件夹吗(我这样说是因为我试过了但无法登录)
一旦我有了新的 AMI ID,原始 EBS 的快照就会添加到卷列表中,这是新的自定义 AMI 所在的位置。从 AMI 列表中,我现在可以启动这个新的 AMI。 当我启动新创建的 AMI(自定义)时,快照大小(根卷大小)与原始 AMI 的根大小相同。我想增加这个尺寸以获得更多的存储空间。我该怎么做?
一旦我有足够的存储空间,我想在此 AMI 上安装 MySQL。在此之后,我是否应该重新创建另一个新的 AMI 来保存这个新安装?还是会自动保留在根 EBS 卷中。
最佳答案
以下是与您所描述的问题和情况相关的一些要点:
如果您正在创建供其他人或公众使用的 AMI,那么您需要非常小心接触磁盘的任何信息。其他人通常可以从已删除的文件中恢复信息。这是我写的一篇文章,其中涉及:http://alestic.com/2011/06/ec2-ami-security
如果您创建的 AMI 仅供您自己使用(而非供其他人使用),那么您就不必对敏感信息那么小心。请记住,您永远不能将曾经包含敏感信息的私有(private)实例变成公共(public) AMI。
您应该能够使用 ec2-create-image 命令或 AWS 控制台中的等效命令从正在运行的实例创建您的私有(private) AMI。新的 AMI 应该支持传递新的 ssh key ,而且(正如您提到的)可能还允许您使用在创建 AMI 时放置的任何 ssh key 进行 ssh。
EBS 启动 AMI 存储在 EBS 快照中。 EBS 快照在后台存储在 S3 中,但您无法通过标准 S3 API 访问它们。当您运行 EBS 引导 AMI 时,它会启动一个 EBS 引导实例,其中根磁盘是一个 EBS 卷(从 AMI 的 EBS 快照创建)。
您可以使用比 AMI 指定的启动磁盘更大的启动磁盘启动实例,方法是在运行时使用 block 设备映射参数。这是我写的一篇解释此问题的文章:http://alestic.com/2009/12/ec2-ebs-boot-resize
您可以更改已运行实例的根磁盘大小,方法是停止它,用更大的副本替换 EBS 卷,然后重新启动它。我在这里提供示例步骤:http://alestic.com/2010/02/ec2-resize-running-ebs-root
我建议将您的 MySQL 数据库文件分离到一个单独的数据 EBS 卷中。我写了一篇文章来描述执行此操作的步骤:http://aws.amazon.com/articles/1663
如果您使用单独的数据 EBS 卷,您可能不需要调整根 EBS 卷的大小。
无论您使用一个还是两个 EBS 卷,无论您是否创建新的 AMI,卷以及安装在它们上的软件和数据都会保留。事实上,创建一个包含完整数据库的 AMI 有点奇怪,因为数据库中的信息很快就会过时。也就是说,您应该定期为 EBS 卷创建快照,尤其是那些包含数据的卷。
始终准确记录/自动执行您启动新实例的方式,包括软件安装和配置。能够在未来重现这一点会派上用场,尤其是在某些紧急情况下。
我对你的问题思考得越多,我就越认为你可能认为你需要做一些你不需要做的事情。这是我的建议:
启动 EBS 启动实例,并开始记录您在以下步骤中所做的一切。
为 MySQL 和其他数据附加一个单独的 EBS 卷(见上文)。
安装和自定义所有其他软件。
为两个 EBS 卷设置常规 EBS 快照。
您可能不需要创建自定义 AMI,也可能不需要调整根磁盘的大小。
关于EBS AMI 和持久性上的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355485/