昨晚阿里云上部署的应用服务突然无法访问,以为是服务挂了,准备ssh远程上去看个究竟。以前也出现过类似的情况,解决方案是远程上去后重启tomcat服务马上就恢复正常。这次准备ssh竟然连接不上,瞬间眼前一黑。打电话问同事是否做了什么操作,同事反馈,由于服务无法访问,他直接把系统执行reboot给重启了。reboot后直接无法ssh连接,也就是系统不能正常重启。登录阿里云控制台重启ECS实例依旧不成功,通过阿里云控制台实例的远程连接 进入管理终端,界面显示如下:
通过上图说明系统无法重启,打电话给阿里云客服,客服建议提交工单找阿里工程师处理(工单受理等待时间一般为半小时),工程师尝试恢复系统也无果,给出如下处理建议。
尝试了各种方法暂时无法解决这个问题。
建议做好备份,然后重新初始化磁盘,然后重新安装应用恢复业务,加强主机安全。
创建快照:https://help.aliyun.com/document_detail/25455.html?spm=5176.product25365.6.701.haklDS
重新初始化磁盘 https://help.aliyun.com/document_detail/25449.html?spm=5176.doc25455.6.697.ywlUna
重新初始化后如需要之前系统的数据,可以使用快照创建云盘,然后挂载到数据,然后拷贝出需要的数据。https://help.aliyun.com/document_detail/32317.html?spm=5176.doc25455.6.680.JDavY
由于服务器上有重要数据包括应用部署文件及mysql数据库文件,之前都没有备份,所以接下来的每一步操作都慎之又慎,心里默念数据不能丢。具体操作步骤如下:
对系统盘创建快照
这个比较耗时,系统盘空间20G创建快照大概用时20分钟左右(直接在阿里云界面操作)。
创建云盘并保存系统盘快照
创建云盘(阿里云云盘现在开始收费,按时收费份SSD盘和普通盘价格不一样,SSD盘20G每小时0.028元),将快照导入云盘(直接在阿里云界面操作)。创建云盘选择地区时一定要注意选择与ECS服务地区一致,否则到时候无法挂载。
系统盘格式化
点击重新初始化磁盘(直接在阿里云界面操作),做了这个操作相当于对ECS实例进行了恢复出厂设置操作
启动实例
直接在界面操作
ssh远程连接
使用ssh远程工具进行连接,输入密码登录成功,一个全新ESC服务器诞生了
挂载云盘
直接在阿里云界面操作,挂载云盘后,在linux系统中就会发现一个新的空间,挂载盘作为系统盘中根目录下的一个文件夹,文件夹中的内容就是之前系统盘中数据,目录结构也与之前系统盘中的目录保持一致。
配置jdk
直接在挂载盘中找到之前部署的应用,启动tomcat无法启动,报错找不到jdk,在/etc/profile
下配置jdk环境变量并让jdk生效。
在/etc/profile
文件最底部添加jdk环境变量的配置
使配置立即生效
mysql数据库迁移
先安装数据库
老数据迁移 在/var/lib/mysql
目录下 执行如下数据,将老数据迁移到新安装的数据库,迁移是注意,对本目录下ibdata1
进行备份,防止迁移迁移过来后数据库服务不能启动
启动mysql服务,并登录mysql 查询数据是否迁移成功。
至此,数据库迁移成功,jdk环境变量配置成功,tomcat服务重新启动,大功告成!
结语
本次处理问题环境
环境 | 版本 |
---|---|
系统 | linux Centos6.5 |
mysql | 5.1.73 |
jdk | build 1.7.0_79-b15 |
tomcat | 7.0.67 |
此次最担心的是数据丢失,告诫自己,以后在生产环境必须对数据库进行备份或做数据实时同步,防止数据丢失。