首页 > 代码库 > 记一次mysql数据恢复
记一次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 1055477743InnoDB: is in the future! Current system log sequence number 566049292.InnoDB: Your database may be corrupt or you may have copied the InnoDBInnoDB: tablespace but not the InnoDB log files. SeeInnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.htmlInnoDB: for more information.170121 11:31:27 InnoDB: Error: page 1 log sequence number 1055476531InnoDB: is in the future! Current system log sequence number 566049292.InnoDB: Your database may be corrupt or you may have copied the InnoDBInnoDB: tablespace but not the InnoDB log files. SeeInnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.htmlInnoDB: for more information.
9.看到了报错,日志文件与数据文件内容不符。 证明数据文件是读到了的,只是,没有业务用户,没有表的定义。重新与报表工程师沟通,得知业务库数据库名为JD,用户也为JD。开始感觉有地方不对劲了,如果只是Innodb的数据文件损坏,mysql.user中应该是有用户记录的呀,怀疑这个安装目录不是原始的Mysql安装目录。
10.找到原始安装目录,进行目录替换。
11.可以查到数据了。尝试通过mysqldump 的方式导出数据。
mysqldump --database jd > jd_db.sql
之后搭建好新的环境,导入数据库,创建好用户,授权。(唯一注意的一点是字符集的问题)
至此整个数据恢复工作完成。
记一次mysql数据恢复