我今年1月份有一位ec2主持人工作正常。但最近我看到我的java应用程序没有响应,因此我尝试使用.pem
密钥ssh到我的ec2主机。虽然安全组中的所有人都允许ssh 22
端口,但它会超时。
我不能丢失那里的mysql服务器中的数据。所以我尝试添加一个规则来打开3306
端口并从外部访问该服务器。但那也是时候了。双重检查安全组。他们似乎还可以。这是我的安全组的屏幕截图。
然后,我拍摄了实例的图像,并从该图像中创建了另一个实例。猜猜是什么,我也不能ssh到那个主人。
然后,为了保证自己,我创建了另一个实例,但这次是一个新实例,即不是来自图像。我可以很容易地进入我的主人。
我在这里缺少什么?或者我以前的主持人有什么问题?我已经在SO中搜索答案,没有人可以帮我解决我的问题。
答案 0 :(得分:1)
您可以尝试创建新实例,然后停止旧实例,分离卷,将卷附加到新实例并装入卷。那么至少你可以访问驱动器并保存你的mysql数据。
答案 1 :(得分:0)
@ dmohr的回答并不是一个确切的解决方案,但对我帮助很大。但是,我的aws guru @leapoffaith设法使用以下步骤为我恢复数据。他向我提供了他后面的步骤,然后我想在这里发布这些,我发现这些对于可能面临像我这样的问题的其他开发人员很有用。
mkdir mount_point
sudo mount /dev/xvdf1 mount_point/
(请注意,设备名称可能不同)。sudo chown -R $USER:$(id -gn $USER) mount_point/var/lib/mysql
在新的ec2主机中安装mysql:
sudo apt-get update
sudo apt-get install mysql-server
- 请记住使用与服务器应用程序连接到mysql数据库相同的root密码。sudo mysql_secure_installation
停止mysql服务:sudo service mysql stop
将数据库文件夹从mount_point的mysql文件夹复制到/var/lib/mysql
文件夹。例如,sudo cp -r yourdb /var/lib/mysql/
如果是InnoDB引擎,
sudo cp ibdata1 /var/lib/mysql/
sudo cp ib_logfile0 /var/lib/mysql/
sudo cp ib_logfile1 /var/lib/mysql/
授予'mysql'用户权限:
sudo chown -R mysql:mysql yourdb/
sudo chmod -R 777 mysql/yourdb
启动mysql服务:sudo service mysql start
sudo umount -d /dev/xvdf1