背景: 最近linux 系统由于程序bug导致数据库操作异常、程序、自建数据库占用大量内存,将系统资源耗尽,系统kill正在申请内存的程序(mysql和异常程序进程)。mysql崩溃后自动恢复(这里不明白为什么会自动恢复)
1、系统message日志显示内存耗尽、数据库进程被kill
2. mysql日志记录数据库崩溃恢复过程
2.1 关闭参数:innodb_fast_shutdown
数据库关闭的时候,innodb需要完成所有full purge何insert buffer操作,这需要一些时间,甚至几个小时完成
- 0
- 关闭时,需要完成所有full purge,insert buffer, flush dirty pages操作
- 做 innodb plugin升级时,会设置为0,再正常关闭数据库。
- 1
- 默认值,表示不需要完成full purge和insert buffer操作,但是缓冲池的脏数据需要刷新到磁盘
- 2
- 既不完成full purge和insert buffer操作,也不把缓冲池的脏数据刷新到磁盘,而是将日志写入日志文件,这样不回有数据丢失,但是下次mysql启动的时候,需要根据日志文件执行恢复操作
2.2 恢复参数:innodb_force_recovery
这里注意,数字越小,则忽略检查的内容越少,每个大的数字都包含了前面小数字忽略检查的内容。当参数设置大于0后,可以对表格进行DML操作,但是DDL操作时不允许的。