Mysql数据文件恢复

来源:互联网 发布:傻白甜 知乎 编辑:程序博客网 时间:2024/05/16 08:25

起因:

mysql服务停止后,重启无法启动,且mysql错误日志xxxxx.err无任何报错信息,权限和磁盘空间都排查过无任何异常,原因不明。

思路:

模拟服务器环境,复制安装文件和mysql数据文件到本地,尝试本地启动mysql,备份需要的数据,再还原到备份服务器。

Mysql版本:

(linux)MySQL-server-5.6.20-1.el6.x86_64.rpm,(Windows)mysql-5.6.20-winx64.zip
注: 个人喜欢解压即用版本的,方便且随意配置,安装版一步步安装太繁琐,还注册了些没必要的服务;若非服务器mysql安装路径和配置与本人习惯不符,可以整个mysql安装、配置以及数据文件整体打包,直接换个服务器整体还原。

第一步:

由于个人所用电脑为Windows,用虚拟机完全模拟Linux服务器,操作起来比较麻烦,故打算在windows上恢复数据,首先下载对应的mysql的windows版本。

第二步:

复制下载服务器上mysql的数据目录以及目录下的数据文件到本地,如下图

这里写图片描述
图中红框为必须复制的,绿框中的可根据选择复制需要还原的数据库。

第三步:

解压mysql安装包,修改配置文件my.ini,

[mysqld]basedir = D:/softs/mysql-5.6.20-winx64datadir = E:/tmp2port = 3306innodb_force_recovery=6character_set_server=utf8sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

注意:配置项 innodb_force_recovery=6 非常重要!!!

第四步:

cmd控制台启动mysql

"D:\softs\mysql-5.6.20-winx64\bin\mysqld" --console

可能会打印如下错误

2016-10-17 08:46:19 7f610a68c720 InnoDB: Error: page 5024 log sequence number 64277510873InnoDB: is in the future! Current system log sequence number 35228419891.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.6/en/forcing-innodb-recovery.htmlInnoDB: for more information.2016-10-17 08:46:19 22422 [ERROR] InnoDB: Table one_database/one_table in the InnoDB data dictionary has tablespace id 23, but tablespace with that id or name does not exist. Have you deleted or moved .ibd files? This may also be a table created with CREATE TEMPORARY TABLE whose .ibd and .frm files MySQL automatically removed, but the table still exists in the InnoDB internal data dictionary.InnoDB: Please refer to

这是由于ibdata1与数据文件不一致,或者没有完全复制的服务器上的数据库文件的导致的,但是没关系,mysql还是能启动起来(至少5.6版本还是可以的),可以查询到第三步复制到本地的数据库。

第五步:

利用命令或第三方工具导出/导入数据库数据,参考 Linux下实现MySQL数据备份和恢复的命令使用全攻略

备份MySQL数据库的命令mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql还原MySQL数据库的命令mysql -hhostname -uusername -ppassword databasename < backupfile.sql

提示,用户密码都是服务器上mysql的用户密码,因为服务器下载下来的mysql文件夹中保存的就是原来数据库的账号信息!

帮助:

虽然,这样能够还原数据库的信息,但是原来服务器上的mysql为什么无法启动依然没搞明白,xxxx.err日志中没有记录任何信息,根本无从下手啊,希望高手看到能指点一二,多谢!!!

0 0
原创粉丝点击