Mysql数据文件恢复

起因:

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-winx64
datadir = E:/tmp2
port = 3306
innodb_force_recovery=6
character_set_server=utf8
sql_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 64277510873
InnoDB: is in the future! Current system log sequence number 35228419891.
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.6/en/forcing-innodb-recovery.html
InnoDB: 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值