偶有感触:遇到这个问题,经过一个下午的排查, 终于解决。
故事情节:我的阿里云服务器突然被黑客攻击了,整个系统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下应该也能成功.
最后别忘了修改文件夹和文件的权限.
这个方法我没有测试, 上面的方法亲测有效.