Linux系统崩溃,数据迁移
就在1小时前,处理了件如标题所述的麻烦事儿。吃完午饭,想对此作个总结,一来自己梳理下过程以便后面遇见类似的事可以 快速处理,二来同行的小伙伴们可以探讨下。故事是这样的,公司所在园区物业晚上断电8小时,导致公司服务器异常关机,系统崩了。一般情况下,不管是服务器还是PC机,很少出现异常关机,系统就崩溃的情况,然而,就这么巧的被我给撞到了!!头痛的是,里面正运行着公司的上线产品后台程序!用户管理方开始多番催促,公司领导严厉交代立即解决!不废话了,描述下解决过程。
由于异常关机导致系统崩溃,检查后发现系统文件损坏,连单机模式也无法启动。之前也没有作数据备份,现在只能通过启动盘进入,将项目程序、文件资源、数据库文件拷出,然后在另一台服务器上进行部署。
一、制作U盘启动盘
由于系统是Linux服务器,所以制作的U盘启动盘也得是Linux启动盘。(用Windows启动盘试过,无法识别服务器磁盘)
在自己的PC电脑上,下载UltraISO安装文件,制作U盘启动盘。(U盘里的原有文件会丢失,注意备份好数据)
二、数据导出
准确的说,这一步做的并不是导出操作,而是一个数据拷贝的操作。为什么这么讲呢?因为系统已经无法启动,无法执行命令进行数据库数据导出操作,只能将数据库文件全部拷进U盘。同时将程序(tomcat下的多个项目)和资源文件拷贝进U盘。
以上都是同事做的,具体操作无法详述。
三、新服务器准备
1、阿里云租用服务器
租用阿里云服务器操作很快,立即买,立即用。在www.aliyun.com下选择产品—>云服务器ECS,可以选择推荐配置,也可以自定义配置,价格在几十元到几万元不等,具体,得根据内存、磁盘、带宽等因素决定。一般建站200元左右一月,数据量大些的400来元一月就够了。(大型网游、大型网店特殊对待)
2、服务器配置
租好的服务器里,居然连java和mysql数据库都没。
2.1 mysql数据库配置
安装mysql服务器端,执行命令 "yum install mysql-server"
启动mysql服务,执行命令 "service mysqld start"
设置数据库密码
安装数据库后,默认没有密码。 通过命令“mysql -uroot -p” , password直接回车,进入数据库。执行命令 "mysqladmin -u root password 123456"设置管理员密码。
2.2 java环境配置
下载、安装java
到oracle官网http://www.oracle.com/technetwork/java/javase/archive-139210.html下载linux版jdk。(官网推荐下载最新版本,这个地址为官网的所有版本)
将下载好的jdk-6u45-linux-x64.bin拷贝至服务器的 /usr/java/目录下。
增加可执行权限 chmod +x jdk-6u45-linux-x64.bin
执行 ./jdk-6u45-linux-x64.bin 生成目录jdk1.6.0_45
在系统配置java环境变量
在/etc/profile文件的最下面增加
JAVA_HOME=/usr/java/jdk1.6.0_45
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
执行命令vi /etc/profile进入文件,命令“i”进行编辑,添加好后,命令“:qw”保存退出。执行命令“source /etc/profile ”激活配置,或者重启服务器激活配置。
执行命令“java -version”查看是否安装java成功
2.3 tomcat应用服务器配置
下载、安装tomcat
到apache官网http://tomcat.apache.org/下载linux版tomcat。
将下载好的apache-tomcat-6.0.45.tar.gz拷贝至服务器的 /usr/local/目录下。
执行命令解压“tar -zxvf apache-tomcat-6.0.45.tar.gz ” 得到 apache-tomcat-6.0.45
将解压后得到的apache-tomcat-6.0.45重命名,执行命令“mv apache-tomcat-6.0.45 tomcat6” 得到 tomcat6
到目前为止,服务器基本环境配置完毕。
四、数据迁移
1、数据库迁移
由于我们的数据库是在非正常执行导出操作进行的数据库备份,所以在新的服务器上不至单单创建数据库,然后执行source就搞定的。
1.1 创建数据库
创建需要添加的数据库名 命令“create database school “ (数据库名例如:school)
创建好后,系统将在 var/lib/mysql目录下生成文件夹"school",里面有个文件db.opt,将其删去(也可在稍后作文件复制时覆盖)。
1.2 数据库文件导入
拷贝:将备份好在U盘里的原服务器上的数据库文件(school内的文件)复制到 var/lib/mysql/school目录下(如果是压缩包,进行解压)
权限设置:将拷贝过来的文件的属主改为 mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/school/*
chmod 660 /var/lib/mysql/school/*
将U盘里备份的数据库文件夹下(school同一级目录里)的ibdata1复制到var/lib/mysql/下(将原来的覆盖)
执行命令"service mysqld restart",数据库迁移OK。
2、程序及资源文件迁移
2.1 程序、资源导入
在usr/local/tomcat6下创建和原服务器同样的资源映射目录(webapps)
将U盘的程序、资源文件复制到映射目录下
2.2 server.xml配置
与原服务器配置一样即可,若有新的域名或映射的目录名不同,可作修改。
若项目的数据库连接地址写的是localhost而不是127.0.0.1,需要执行命令“echo "127.0.0.1 `hostname` localhost localhost.localdomain" >/etc/hosts”
启动tomcat进行IP访问。
五、域名解析
由于服务器发生了变更,公网IP也随着变了,需要将域名解析在新的服务器对应公网IP上。解析时间,视域名解析平台而定,一般在10分钟内,有的立马生效。
场景介绍:
由于使用root权限, 删除了一个Libpthread.so.*的文件, 导致好多命令不能使用, 甚至ls, cp 等. 没办法 ,重启后操作系统居然崩溃. 里面有很重要数据, 所以不得不想办法拷贝出来
操作系统为ubuntu12.04.
恢复过程:
- 首先想到的是把这个盘挂载到另一个linux系统中. 这样, 用fdisk -l可以看到这个系统盘
- 看到的内容也只是一个/dev/sdb整个硬盘的情况, 里面的分区什么的, 都没有.
- 当然是用mount 挂载这个硬盘了, 有时候还要指定文件类型.
- 挂载后进去一看, 文件系统什么的都在 但是, 到文件夹里面查找的时候, 数据都已经不在, 只有文件夹.当时就茫然了
- 对于/dev/sdb这个是整个硬盘, 然后硬盘是分成很多区. 在系统区中, 是整个文件系统,而数据可能在/dev/sdb1或/dev/sdb2中, 这样linux通过挂载的方式,把数据挂载到对应的文件系统下, 反应到这里是, 数据挂载到某个文件夹下. 之所以看不到数据是因为这些文件是在其它分区中
- 应该是mount /dev/sdb5 /mnt或者其它分区. 如果不成功,就是要指定文件类型
- 挂载成功后, 进去看一下,就会发现,数据在里面
- 在未找到解决方式前,切勿对硬盘盲目分区, 这样会损坏数据
- 使用cp命令,不要mv或rm
- 使用其它恢复软件时, 也要特别注意,一般使用软件, 在Linux下是不实际的
虚拟机linux在崩溃的情况下取出其中的资料 - CSDN博客 https://blog.csdn.net/ssdsafsdsd/article/details/8132625
Centos 7 服务器崩溃后,抢救数据的方法 - CSDN博客 https://blog.csdn.net/weixin_37914752/article/details/80341217
Linux 意外操作后如何进行数据抢救 - CSDN博客 https://blog.csdn.net/umke888/article/details/54865758
Ubuntu系统无法正常进入时,如何将文件拷贝到U盘 - CSDN博客 https://blog.csdn.net/zhangxingyun123_/article/details/44221707
【案例】如何处理Linux虚拟机文件系统损坏无法进入系统的问题 - CSDN博客 https://blog.csdn.net/u013013553/article/details/44676697
Linux系统崩溃,数据迁移的更多相关文章
- linux Kernell crash dump------kdump 的安装设置+Linux系统崩溃的修复解决过程+mysql+kvm
http://www.ibm.com/developerworks/cn/linux/l-cn-dumpanalyse/https://www.kernel.org/pub/linux/utils/k ...
- (转)Linux系统sersync数据实时同步
Linux系统sersync数据实时同步 原文:http://blog.csdn.net/mingongge/article/details/52985259 前面介绍了以守护进程的方式传输或同步数据 ...
- Linux系统捕获数据包流程
Linux系统捕获数据包流程 为了提高数据包的捕获效率,瓶颈问题是一个需要非常关注的焦点.减少在捕获数据包过程中的瓶颈,就能够提高数据包捕获的整体性能.下面本文将以Linux操作系统为平台,分析捕获数 ...
- linux 系统中将数据写入文档不能立即保存问题的解决方法
应用场景: 设备跑的是Linux系统,与PC上位机进行通信,上位机可以给Linux发送设备配置信息,Linux将配置信息写入文件中以备设备断电重启时使用. bug现象: 设备正常运行,设备配置信息为A ...
- Linux系统实时数据同步inotify+rsync
一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...
- 阿里云Linux系统挂载数据盘
Linux云服务器数据盘未做分区和格式化,我们可以根据以下步骤进行分区以及格式化操作. 目录 [隐藏] 1 查看数据盘 2 对数据盘进行分区 3 查看新的分区 4 格式化新分区 5 添加分区信息 6 ...
- 使用SSIS对Dynamics CRM 系统进行数据迁移
嗨,各位.近期项目一直都非常忙,而且自己也一直在思考职业发展的问题,所以有非常长一段时间没静下心写几篇Blog了.近期我參与的项目是Dynamics CRM 2011 到 Dynamics CRM 2 ...
- 阿里云里面的Linux 系统挂载数据盘
转自:http://www.cnblogs.com/adjk/p/5112360.html 适用系统:非IO优化+SSD云盘Linux(Redhat , CentOS,Debian,Ubuntu)实例 ...
- Linux 系统挂载数据盘
适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) * Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 下面的操作将会把数据盘划 ...
随机推荐
- hduoj 2546饭卡
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- CRLF注入攻击
原理:http数据包通过\r\n\r\n来分开http header何http body 实现:首先这种攻击发生在应用层,且发生在服务器返回给我们的http reponse没有经过敏感字符的过滤, ...
- C#中正则表达式的构建与匹配
使用方法 [1]用用命名空间System.Text.RegularExpressions [2]构造正则表达式 在使用正则表达式时,要先构造正则表达式,这就用到了Regex类,其构建方式有两种: 基本 ...
- 树莓派WLAN连接PC(不通过路由器)
上一篇博文捣鼓了一下树莓派直连线连接PC.吃完午饭心血来潮,树莓派既然能用直连线连接PC,曾经也试过拿PC当作热点,为何不尝试一下用WLAN将树莓派与PC互连呢?果断搞起. 首先,我当前笔记本是用WL ...
- Debug Diagnostics Tool创建.Net异常转储并用Windbg分析异常
当我们要在IIS PRD环境下分析异常,并且对问题毫无头绪,又没有权限直接上打Log的代码.这个时候就是Debug Diagnostics Tool & Windbg大显神威的时候了. Deb ...
- intellijidea课程 intellijidea神器使用技巧2-1 无处不在的跳转
idea快捷键(基于windows平台) 1 书签跳转 Ctrl alt [ ] ==> 项目之间的跳转 Ctrl shift E ==> 文件之间的跳转(最近编辑的文件) Ctrl ...
- Promise对象(异步编程)
Promise对象解决函数的异步调用(跟回调函数一样) 三种状态: 未完成(pending)已完成(fulfilled)失败(rejected) 通过then函数来链式调用 目前市面上流行的一些类库:
- Java—多态
多态——对象的多种形态(继承是多态实现的基础) 引用多态:父类的引用可以指向本类的对象:父类的引用可以指向子类的对象 方法多态:创建本类对象时,调用的方法为本类方法:创建子类对象时,调用的方法为子类重 ...
- jquery.dad.js实现table的垂直拖拽(并取到当前拖拽对象)
http://sc.chinaz.com/jiaoben/161202572210.htm 1.首先官网实例,实现的都是div为容器的元素拖拽,示例如下: 2.最近的项目,要实现tbody的每一行tr ...
- Excel操作之VLOOKUP函数
1.作用 VLOOKUP函数是Excel中的一个纵向查找函数,它与LOOKUP函数和HLOOKUP函数属于一类函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速导入数据等函数功能.功能 ...