我运行了一个 ubuntu EC2 实例大约一年了,在安装最新更新后,我失去了与它的 SSH 连接。我运行了一个 Rails 应用程序,并使用 Codeship 的自动 capistrano 部署。
服务器一直拒绝我的两个私钥以及我用于持续部署的 Codeship 密钥。我认为文件authorized_keys
可能已损坏,并尝试了所有方法来恢复它。但是,我没有成功。幸运的是,我有一张二月份拍摄的快照。
这是我尝试过的:
- 我使用最新的驱动器创建了一个快照,并从中重新创建了另一个卷。
- 我创建了一个新的实例并安装了我创建的新卷
/dev/sdf
。 - 检查
authorized_keys
驱动器上的文件时,发现它具有我之前提到的所有 3 个键。
因此,我可以得出结论,我的密钥没有问题,但 SSH 配置有问题。尽管我可以轻松创建新实例,但主要问题是我必须从 mysql 数据库中转储数据存在于该卷中。这可能吗?如果是,我该如何使用已安装的卷来实现这一点?
答案1
我必须转储该卷中存在的 mysql 数据库中的数据。这可能吗?如果可以,我该如何使用已安装的卷来执行此操作?
是的,这是可能的:
mysql
在主机上安装。- 停止
mysqld
。 - 将配置
datadir
内的指令指向或者删除并符号链接到。mysql
/<mountpoint-of-your-old-host/path/to/the/datadir
/path/to/the/datadir
/<mountpoint-of-your-old-host/path/to/the/datadir
/path/to/the/datadir
- 在执行此操作时,请注意权限和所有权等。
- 开始
mysqld
,转储并获利! - 提示:实施一个系统,每分钟/每小时/每天/每周自动转储数据库和重要数据,并将其保存在一个(最好是两个)远程位置。如果数据敏感,请对其进行加密。
答案2
如果你启动了 EBS 实例,请按照本指南操作如何恢复无法访问的 Linux 实例
EBS EC2 实例是一种福音。您需要做的是:
转到 EC2 Web 控制台,在 EBS - 卷下,查找附加到实例的 EBS 卷。确保在执行此操作之前关闭实例。
将其与实例 ID 分离。
- 现在将此卷附加到另一个“良好”的 EC2 实例。
- 进入那个“良好的 EC2”实例,安装驱动器。
如果您不确定所有这些,只需创建一个在 EBS 内启动的小型 EC2 实例,然后先播放它。您还应该为“坏”EC2 创建快照(请标记它们)作为原始卷的备份。
由于 EBS 卷是网络存储,因此挂载 MySQL 卷并将其传输到新的 EC2 应该不难。您需要做的是在移动 mysql 卷之前进行更多的快照备份。
如果您从“坏的 EC2 快照”启动实例没有问题,那么您应该这样做。首先启动实例,然后安装 DB 卷。由于配置相同,您应该可以毫无问题地立即运行 Mysql,并且数据完好无损。(但同样,在尝试之前,请为所有这些卷制作更多快照)
对于困难的部分,请查看这个:将 MySQL 数据库从一个 EBS 卷移动到另一个 AWS EC2 上。只需记住备份!由于 EBS 卷按比例收费,因此不要犹豫创建一些备份(即使数据库跨越几百 GB 或 TB)。您可以事后删除它们,并且只需为使用这些存储的期间付费。