linux服务器MySQL数据从磁盘拷贝以及恢复

偶有感触:遇到这个问题,经过一个下午的排查, 终于解决。 

故事情节:我的阿里云服务器突然被******了,整个系统down了。 找客服,他们排查说usr目录的文件全部丢失。让我重新初始化系统盘。初始化之前先生成一个快照。还好生成了快照,让事情没有发展为不可挽救的地步。

mysql数据库数据恢复。

其他的问题都一一解决了。 到了最后, mysql上的数据无论如何都不能正常显示出来。数据库不要紧(有备份), 之前的数据才是最要紧的。

这就是本文的目的。 最终如何将mysql数据显示出来。

--------------------------------------------------------------------

首先:快照生成的磁盘挂载到了/mnt目录下. mysql的数据库文件目录是/var/lib/mysql. 挂载到/mnt下的原mysql数据库文件目录就是/mnt/var/lib/mysql

想要恢复mysql中的rap_db数据. 并且恢复数据. 我的做法如下:

1. 将rap_db的表结构创建好. 可以在Navicat客户端生成.

2. 将/var/lib/mysql下的ibdata1文件删除

 

3. 将/mnt/var/lib/mysql下的ibdata1拷贝到/var/lib/mysql下. 

注: 我们数据库实际的数据都是放在ibdata1下的, 所以这个文件很重要

4. 一定要注意修改文件的权限

  chown mysql:mysql ibdata1

-----------------------------------------------------------------------------------

以上是我的做法. 但是,我觉得直接将/mnt/var/lib/mysql文件夹下的rap_db文件夹和ibdata1文件一起拷贝到/var/lib/mysql下应该也能成功. 

最后别忘了修改文件夹和文件的权限. 

这个方法我没有测试, 上面的方法亲测有效.

 

上一篇:InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!


下一篇:mysql8.0启动报错:thr innodb_system data file ibdata1 must be writable