【翻译】如何从ibdata和.frm文件恢复MySQL表数据

2021-01-05  本文已影响0人  frankie_cheung

这个教材叫你如何在数据库全部或者部分数据丢失,或者数据库加载数据失败时,如何恢复数据。
发生这种情况的一个原因是表数据损坏。
在这种特定情况下,你连接到MySQL服务器,你看不到更多的表,因为它们缺失了。
在这种情况下,MySQL错误日志包含如下信息:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

下面解释的这种方法只可以在innodb引擎才可以使用。
注意:在你做任何事之前,在当前的数据库条件下,对数据库的全部文件进行一次备份,并且保证它们在其他地方是安全的。
假如要恢复数据,需要保证数据目录以及它的内容是完整的,在我这个示例中,是完好的。

drwx------ 2 mysql mysql     4096 Oct 11  2012 performance_schema
drwx------ 2 mysql mysql     4096 Dec 10  2012 ndbinfo
drwx--x--x 2 mysql mysql     4096 Dec 10  2012 mysql
-rw-rw---- 1 mysql mysql       56 Dec 19  2012 auto.cnf
drwx------ 2 mysql mysql     4096 Jul 30  2013 bugs
-rw-r----- 1 mysql mysql 50331648 Mar 18 10:35 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Apr 22  2013 ib_logfile1
-rw-r----- 1 mysql mysql 35651584 Mar 18 10:35 ibdata1
拷贝文件

假如使用如上日志文件恢复数据,第一步就是停止MySQL服务
service mysqld stop
拷贝ibdata文件和数据库对应库目录下的文件到某一个目录下,我们将利用他们来恢复数据,在这个案例中,我们拷贝到/tmp目录下,在这个案例中,数据库库的名字为bugs.

cp –r ibdata* ib_logfile* /tmp

cp –r schema_name/  /tmp/schema_name/

启动MySQL
service mysqld start
另一方面,一个典型的数据库备份和恢复,你应该使用mysqldump命令。

恢复数据

下一步,如下解释恢复表数据
在我的my.cnf文件中,设置一个参数的值给ib_logfile0 文件,我的案例中我设置48M,当我看这个文件大小时,则可以 ls -lh ib_logfile0
innodb_log_file_size=48M
注意logfile0 和logfile1的 大小应该一直
拷贝前面的ibdata.*到MySQL数据库的data对应目录
cp –r /tmp/ibdata* /var/lib/mysql/
在数据目录中创建一个与要还原的数据库架构名称同名的空文件夹,并复制此文件夹中以前的.frm文件,如下所示:
··

cp –r /tmp/ib_logfile* /var/lib/mysql/
cp –r /tmp/schema_name/*.frm /var/lib/mysql/schema_name/

最后重启MySQL
service mysqld restart
现在你将表数据恢复了,并且数据库也运行,不要忘记给连接MySQL的客户端授予适当的权限。
reference:
原文:https://www.thegeekstuff.com/2014/04/recover-innodb-mysql/
单词:
One of the reason for this to happen is when 导致出现这种情况的原因之一是XXX
particular :特殊的
scenario:情形
corrupted:损坏的
associated :相关的
Holds :持有
corresponding :相应的
concepts :概念
On a related note:另一方面
typical :典型的
respective :分别的,各自的
appropriate :适当的

上一篇下一篇

猜你喜欢

热点阅读