InnoDB监控有两种类型:一种是标准InnoDB监控(standard InnoDB Monitor)和 InnoDB 锁监控(InnoDB Lock Monitor),锁监控会作为标准监控的一部分打印出来。
启用InnoDB 监控
当InnoDB监控启用后,InnoDB会每隔15秒写入监控日志到mysql 标准错误日志文件中(mysqld server standard error output).
在Windows系统上,stderr 文件是指向默认日志文件除非另外配置了。如果你想将输出从定向到 console window 而不是错误日志中,启动mysql的时候加上 --console选项。
InnoDB监控应该在你确实需要查看监控信息时才启用,因为它通常会带来一些性能问题。另外如果监控日志一直打开输出到文件中会导致文件变得很大。
InnoDB监控输出以一个包含时间戳和监控名称的头开始。比如:
=====================================
2019-07-05 12:37:29 0x7fc2a95c1700 INNODB MONITOR OUTPUT
=====================================
InnoDB锁监控的开始同上面一样
innodb_status_output 和 innodb_status_output_locks 这两个系统变量是用来启用标准innodb监控和 InnoDB锁监控的。
启用或者禁用 InnoDB监控 需要Process 权限。
启用标准InnoDB监控可以通过设置 innodb_status_output = ON来开启
SET GLOBAL innodb_status_output=ON;
禁用标准InnoDB监控 set innodb_status_output = OFF.
当重启MySQL服务的时候,innodb_status_output 会被设置为 OFF。
InnoDB锁监控是随着InnoDB标准监控输入一起打印的,因此要启用InnoDB锁监控需要一并开启InnoDB标准监控。
SET GLOBAL innodb_status_output=ON;
SET GLOBAL innodb_status_output_locks=ON;
禁用InnoDB锁监控设置 innodb_status_output_locks = OFF, 设置innodb_status_output = OFF 也会同时禁用InnoDB锁监控
跟InnoDB标准监控一样,重启MySQL服务后InnoDB锁监控也会自动设置为OFF。如果通过 SHOW ENGINE INNODB STATUS 命令来查看监控输出,则只需要设置 innodb_status_output_locks=ON 就能启用InnoDB锁监控
在需要的时候获得InnoDB标准监控输出
作为周期输出监控的替代方案,你可以通过 SHOW ENGINE INNODB STATUS 这一SQL语句来获得InnoDB的标准监控输出当你需要的时候。这个语句的输出也包括了InnoDB锁监控当锁监控被启用的时候。
InnoDB标准监控输出也可以重定向到一个状态文件中,在启动的时候通过 --innodb-status-file选项来指定。当使用这个选项,InnoDB启动的时候会创建名称为 innodb_status.pid的文件在数据目录中,并且每隔15秒输出监控信息到文件中。
当MySQL正常停机的时候会删除这个状态文件,如果发生非正常的停机,这个文件需要手工删除。
这个 --innodb-status-file 选项一般只临时使用,InnoDB标准监控输出会影响性能,并且这个 innodb_status.pid文件会随着时间的推移变得很大。