- 论坛徽章:
- 0
|
2011-9-20 由于使用YUM 安装php5.3.3 ,但是由于服务器上的系统环境比较混乱,执行PHP命令就会报出 OPENSSL 严重出错的问题。后来考虑重新安装OPENSSL 。但是只是在考虑而已,因为一般使用 yum remove 的时候会先罗列出所有受到牵连的软件包,需要得到使用者的确认之后才会进行。但是可怕的事情来了:
1. yum 的配置文件被修改过,不需要提示,而直接删除了400+个软件包!!!
2. 删除过程我犹豫了一下,没有及时的ctrl+c ,结果悲剧了!!!
解决过程:
1. 前期评估一下受影响的范围,发现连 ls、tar、ssh、scp、cp、rm、mv 等系统基础命令都被删除了,也就是要重新搭建环境的话需要安装太多的软件包。这时发现更要命的是 wget、rpm、yum 命令也没有,这就给重新搭建环境增加了更大得难题。
2. 发现原始的服务器上服务仍然可以正在运行,但是仅仅是已经取得系统资源的用户可以继续使用,服务已经没有办法想系统申请新的资源。所以没有多少时间去等待我们恢复系统,而且恢复系统的风险太大。
3. 我们决定申请一台新的设备,然后将旧系统上的数据导出来,并在新设备上恢复服务。数据包括 程序 和 数据库数据。
1). 很庆幸 zip gzip nc rsync rz sz 命令还能使用。
2). 恢复程序数据:由于我之前登陆在服务器上,虽然没有了ssh 和 scp 服务,但是可以利用我已经建立的ssh链接,使用 sz 和 rz 进行传输数据,就这样备份了500M的压缩包花了3小时。(注意在sz 和 rz 过程如果ctrl+c的话,会造出绘画中断,也就你会丢掉这个绘画终端,这种情况下无异于放弃所有数据,所以务必耐心耐心!!)。
3). 恢复程序数据: 后来 yongzhe.feng 提醒可以使用nc 命令来传输数据,果然效率非常的高效,1G的压缩包仅仅传输了几分钟,效率提高了百倍。
使用方法:
数据接收端: nc -l ${listen_port} > /tmp/packet.zip (随便取一个名字)
数据发生端: nc ${rec_ip} ${listen_port} < packet.zip
4) . 恢复数据库数据:由于所有的数据是跑在内存里,同时端口还在服务,所以可以利用远程的客户端进行备份出来。
得到教训:
1. 可以是yum 安装软件,不要使用yum 卸载任何安装包!特别是底层的软件包!!!
2. 评估结果之后选择“高效”的方法来修复,时间就是生命,因为你不知道下一秒钟会发生什么,是不是网络会闪断一下!-_-!!
3. 旁边需要一群可以帮你解决问题的人帮忙头脑风暴,有更多的方法可以选择,少走弯路!
4. 在下午4点以后不要操作任何危险系数高的操作!!! |
|