mysql数据文件损坏恢复方案

2023-08-17sad creeper

mysql数据文件损坏引起数据库服务异常,不能通过正常手段dump数据时,需采用非常规手段。

首先修改innodb_force_recovery参数,使mysqld跳过恢复步骤,将mysqld 启动,将数据导出来然后重建数据库。

innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。

1. (SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。

2. (SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。

3. (SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作。

4. (SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作。

5. (SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。

6. (SRV_FORCE_NO_LOG_REDO):不执行前滚的操作。

注意

a 当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。

b 当innodb_purge_threads 和 innodb_force_recovery一起设置会出现一种loop现象。

警告

仅innodb_force_recovery 在紧急情况下设置为大于 0 的值,以便您可以启动InnoDB和转 储您的表。在这样做之前,请确保您拥有数据库的备份副本,以防需要重新创建它。4 或 更大的值可能会永久损坏数据文件。仅 innodb_force_recovery在您在数据库的单独物理副 本上成功测试设置后,才能在生产服务器实例上使用 4 或更高的设置。强制InnoDB恢复 时,您应该始终从该值开始, innodb_force_recovery=1并且只在必要时逐步增加该值。

最后:谨慎设置innodb_force_recovery的等级

阅读 1071 评论


f

free samples of priligy

Remarkable! Its genuinely amazing article, I have got much clear idea regarding from this post.

2个月前 ·