纵有疾风起
人生不言弃

mysql里面INNODB存储引擎数据库怎么恢复

InnoDB,是
的数据库引擎之一,为
发布binary的标准之一。InnoDB由Innobase Oy公司所开发,
时由
并购。与传统的

相比,InnoDB的最大特色就是支持了
兼容的
(Transaction)功能,类似于

INNODB存储引擎数据库恢复方法与另一种类型的数据库恢复是有区别的,下面本文章就为大家介绍MYSQL中INNODB存储引擎数据库恢复方法,希望文章能给各位带来帮助哦。

MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。

而使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。

MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。解决方法就是:

同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置。启动MySQL的Windows服务,如果不能成功的话,查看data文件夹中有个“*.err”错误日志文件,其中会对启动失败的原因有所描述的。比如我碰到过两种错误原因。

一种是类似这样的错误信息:

  1. INIFile code 
  2. InnoDB: Error: log file .ib_logfile0 is of different size 0 10485760 bytes InnoDB: than specified in the .cnf file 0 25165824 bytes! 

这是因为在mysql配置文件中配置的日志文件大小与实际的不相符,解决方法是直接删掉旧的“ib_logfile0”等日志文件,重启MySQL后会自动生成新的日志文件的.

另一中则是这样的错误信息:

  1. INIFile code 
  2. InnoDB: Operating system error number 5 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. It may also be you have created a subdirectory InnoDB: of the same name as a data file. InnoDB: File name .ibdata1 InnoDB: File operation call: ‘open’. InnoDB: Cannot continue operation. 

经检查原来是“ibdata1”文件在复制的过程中不知怎的被加上只读属性了,解决方法是去掉“ibdata1”文件的只读属性便可.

强制恢复:如果数据库页被破坏,你可能想要用SELECT INTO OUTFILE从从数据库转储你的表,通常以这种方法获取的大多数数据是完好的,即使这样,损坏可能导致SELECT * FROM tbl_name或者InnoDB后台操作崩溃或断言,或者甚至使得InnoDB前滚恢复崩溃。 尽管如此,你可以用它来强制InnoDB存储引擎启动同时阻止后台操作运行,以便你能转储你的表,例如:你可以在重启服务器之前,在选项文件的[mysqld]节添加如下的行.

[mysqld]

innodb_force_recovery = 4

innodb_force_recovery被允许的非零值如下,一个更大的数字包含所有更小数字的预防措施,如果你能够用一个多数是4的选项值来转储你的表,那么你是比较安全的,只有一些在损坏的单独页面上的数据会丢失,一个为6的值更夸张,因为数据库页被留在一个陈旧的状态,这个状态反过来可以引发对 B树和其它数据库结构的更多破坏.

• 1 (SRV_FORCE_IGNORE_CORRUPT)

未经允许不得转载:起风网 » mysql里面INNODB存储引擎数据库怎么恢复
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录