MySQL--InnoDB 启动、关闭与恢复

在关闭时,参数 innodb_fast_shutdown 影响着表的存储引擎为 InnoDB 的行为。该参数可取值为 0、1、2,默认值为 1。

  0:表示在 MySQL 数据库关闭时,InnoDB 需要完成所有的 full purge 和 merge insert buffer,并且将所有的在脏页刷新回磁盘。这需要一些时间,有时甚至需要几个小时来完成。如果在进行 InnoDB 升级时,必须将这个参数调为 0,然后在关闭数据库。

  1:不需要完成上述的 full purge 和 merge insert buffer,但是在缓冲池中的一些数据脏页还是会刷新回磁盘。

  2:不完成 full purge 和 merge insert buffer 操作,也不将缓冲池中的数据脏页写会磁盘,而是将日志都写入日志文件。这样不会有任何事务的丢失,但是下次启用 MySQL 时,会进行恢复操作。

当正常关闭 MySQL 数据库时,下次的启动应该会非常正常。但是如果没有正常的关闭数据库,或者在关闭数据库时,将 innodb_fast_shutdown 设为了 2 时,下次 MySQL 数据库启动时,会对 InnoDB 存储引擎的表进行恢复操作。

 innodb_force_recovery 影响 InnoDB 存储引擎恢复的状况。

  https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

  0(默认):当发生需要恢复时,进行所有的恢复操作。当不能进行有效恢复时,MySQL 数据库可能发生宕机,并把错误写入错误日志中去。

  

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

原文地址:https://www.cnblogs.com/microcat/p/7410480.html