记一次mysql数据恢复

Posted Alex Zeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次mysql数据恢复相关的知识,希望对你有一定的参考价值。

确切的说更像是一次数据迁移。

背景介绍:

         操作系统:Windows Server 2008 R2

         数据库版本:mysql 5.5

         数据库的安装目录与数据文件目录不在同一个磁盘,数据文件所在的目录磁盘损坏。而后通过数据恢复工具恢复数据文件。前期研发的同事尝试启动恢复数据库,不成功,多轮尝试不成功后找到我。

1.得到同事给的数据文件 ibdata1,Mysql安装目录MySQL\\MySQL Server 5.5。调整my.ini文件尝试启动数据库。

2.将mysql base dir 拷贝到英文目录D:\\test,重新配置my.ini。切换目录尝试启动。

3.启动另外一个窗口尝试登录

4.尝试跳过密码验证,设置参数skip-grant-tables

5.查看数据库

6.并没有发现业务库,进一步查看用户。

7.查看搜索引擎,InnoDB启动了。

8.查看错误日志

170121 11:31:27  InnoDB: Error: page 7 log sequence number 1055477743
InnoDB: is in the future! Current system log sequence number 566049292.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
170121 11:31:27  InnoDB: Error: page 1 log sequence number 1055476531
InnoDB: is in the future! Current system log sequence number 566049292.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.

9.看到了报错,日志文件与数据文件内容不符。 证明数据文件是读到了的,只是,没有业务用户,没有表的定义。重新与报表工程师沟通,得知业务库数据库名为JD,用户也为JD。开始感觉有地方不对劲了,如果只是Innodb的数据文件损坏,mysql.user中应该是有用户记录的呀,怀疑这个安装目录不是原始的Mysql安装目录。

10.找到原始安装目录,进行目录替换。

11.可以查到数据了。尝试通过mysqldump 的方式导出数据。

mysqldump --database jd > jd_db.sql

之后搭建好新的环境,导入数据库,创建好用户,授权。(唯一注意的一点是字符集的问题)

至此整个数据恢复工作完成。

以上是关于记一次mysql数据恢复的主要内容,如果未能解决你的问题,请参考以下文章

记一次血淋淋的MySQL崩溃修复案例

记一次线上MySQL数据库死锁问题

记一次MySQL崩溃修复案例,再也不用删库跑路了

记一次MySQL崩溃修复案例,再也不用删库跑路了

记一次MySQL崩溃修复案例,再也不用删库跑路了

记一次mysql数据恢复