63.innodb_force_recovery 参数

  innodb_force_recovery参数影响了整个innodb_存储引恢复的状况,该参数默认值是0,代表当发生需要恢复时,进行所有的恢复操作,当不能进行有效恢复时,如果数据页发生corruption,mysql数据库可能发生宕机,并把错误写入到错误日志中。 

mysql> select @@innodb_force_recovery;
+-------------------------+
| @@innodb_force_recovery |
+-------------------------+
|                       0 |
+-------------------------+

  但是,在某些情况下不需要进行完整的恢复操作,因为用户自己知道怎么进行恢复,比如在对一个大表进行alter table操作时发生了意外,数据库重启时会对innodb表进行回滚操作,对于一个大表来说这需要很长的时间,可能是几个小时。这时用户可以自行进行恢复,如把表删除,从备份中重新导入数据列表,可能这些操作的速度要远远快于回滚操作

  innodb_force_recorey还提供了6个非0的值供选择:1~6。大的数字表示包含了前面的所有小数字表示的影响。

  • 1(srv_force_ignore_corrupt):忽略查到的corrupt页
  • 2(srv_force_no_backgound):阻止maste thread 线程运行,如Master thread 线程需要进行full purge操作,而这会导致crash
  • 3(srv_force_no_trx_undo):不进行事务的回滚操作
  • 4(srv_force_no_ibuf_merge):不进行插入缓冲的合并操作
  • 5(srv_force_no_undo_log_scan):不查看撤销日志(undo log),innodb存储引擎会将未提交的事务视为已提交
  • 6(srv_force_no_log_redo):不进行前滚操作

需要注意的是:在设置了参数innodb_force_recovery大于0后,用户可以对表进行select,create和drop操作,但是insert、update、delete这类DML操作是不允许的。

该参数最多可以设置到3这个级别,如果设置的越靠后,那么会对数据库造成不可恢复的破坏,切记切记!!!

posted on 2022-11-07 17:02  太白金星有点烦  阅读(243)  评论(0)    收藏  举报

导航