如何从我的 EBS 支持的 EC2 实例创建 AMI?
Posted
技术标签:
【中文标题】如何从我的 EBS 支持的 EC2 实例创建 AMI?【英文标题】:How do I create an AMI from my EBS backed EC2 instance? 【发布时间】:2011-09-13 07:35:25 【问题描述】:我有一个 EBS 支持的 EC2 运行实例。 EBS 存储拥有一个数据库。我想以此创建一个 AMI。有人可以提供指导吗?
-
我必须关闭 mysql 吗?
我的 AMI 会尝试连接到同一个 EBS 存储吗?! (灾难)
创建 AMI 会自动为我的 EBS 卷创建快照并创建副本吗? (希望是这个)
感谢您耐心解答一个很长的问题。我承认那里有类似的信息,但没有真正解决可能出现的问题。
这个问题:
http://***.com/questions/4475532/creating-an-ec2-ami-with-an-ebs-backed-instance-is-it-possible
特定于 ElasticFox,我没有使用任何工具(首选命令行)。我也不相信这个问题得到了回答。
这个博客:
http://instantbadger.blogspot.com/2009/09/how-to-create-and-save-ami-image-from.html
虽然对创建 AMI 很有指导意义,但根本没有提到 EBS,我有点担心所有这些数据。
提前致谢!
【问题讨论】:
【参考方案1】:在回答您的问题之前,我建议您在开始创建映像之前将 MySQL 数据库备份到不存储为快照或 EBS 的文件中。 (当然要测试您是否可以将其恢复到生产系统以外的其他地方。)
我使用:
mysqldump --add-drop-table -u root -p databasename > database.sql
备份和:
mysql -u root -p databasename < database.sql
恢复。
-
不,您不必关闭 MySQL,但您必须在创建 AMI 时阻止写入数据库。
不,创建 AMI 还会创建 EBS 卷的新快照(内容与创建映像时的内容相同)。
是的,见 2
更多信息: 我更喜欢在拍摄快照或创建图像时尽可能关闭数据库。也就是说,我绝不是 MySQL 专家,但这里有来自 http://aws.amazon.com/articles/1663?_encoding=UTF8&jiveRedirect=1 的一些指导
使用您在上面设置的密码在实例上启动 MySQL 会话。
mysql -u root -p
在 mysql 会话中,将表刷新到磁盘并获取锁。将文件系统刷新到磁盘并冻结它。不要退出 MySQL 会话,否则您将丢失锁定和快照可能不一致的数据库文件!
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
SYSTEM sudo xfs_freeze -f /vol
【讨论】:
谢谢。这是我最终将使用的方法。这相当复杂,因为我也设置了复制,但这篇文章给了我起点。一旦我得到完整的答案,我也会将其发布给其他人。【参考方案2】:亚马逊控制台为您提供了执行此操作的选项。
只需登录到您的 aws 控制台并导航您希望创建 AMI 的实例 ID。
-
右键单击实例并单击“停止”。
右键单击实例并单击“创建 AMI”。
输入 AMI 的名称并点击 OK。
就是这样。这将创建一个 AMI。详细信息请参见:http://docs.amazonwebservices.com/AWSEC2/2011-05-15/UserGuide/index.html?Tutorial_CreateImage.html。
【讨论】:
【参考方案3】:确保您始终按照 steenhulthin 的建议通过转储备份 MySQL。
此链接将帮助您创建新的 EBS 支持的 AMI: http://www.capsunlock.net/2009/12/create-ebs-boot-ami.html
我还建议将您的 MySQL 数据放置到单独的 EBS 卷或更好的 RAID 卷中。
【讨论】:
【参考方案4】:正如@steenhulthin 提到的,您应该执行 FS Freeze 并将数据库置于 readlock 模式以进行一致的备份,否则您将只有崩溃一致
备份类型 https://asvignesh.in/backup-types-inconsistent-app-consistent-crash-consistent/
您可以使用 SSM 命令执行 FLUSH 并锁定数据库的表,这将为您带来 MySQL 数据的一致性并从控制台创建映像,一旦触发 AMI 创建,您就可以解锁表 确保在后台脚本中运行 Flush 表,一旦关闭会话,MySQL 中的锁将被释放
您可以找到用于锁定和解锁表的脚本,您可以通过 SSM https://asvignesh.in/mysql-app-consistent-backup-using-nimesa/ 调用这些脚本
这是文件系统冻结的脚本 https://asvignesh.in/consistent-backup-of-your-ec2-instance/
【讨论】:
以上是关于如何从我的 EBS 支持的 EC2 实例创建 AMI?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Boto 启动 EC2 实例,指定 EBS 的大小?