14.18.2 启用 InnoDB 监控器

启用InnoDB个监视器以进行定期输出时,InnoDB大约每 15 秒将输出写入mysqld个服务器标准错误输出(stderr)。

InnoDB将监视器输出发送到stderr,而不是stdout或固定大小的内存缓冲区,以避免潜在的缓冲区溢出。

在 Windows 上,除非另有配置,否则stderr将定向到默认日志文件。如果要将输出定向到控制台窗口而不是错误日志,请使用--console选项从控制台窗口中的命令提示符启动服务器。有关更多信息,请参见第 5.4.2.1 节“ Windows 上的错误记录”

在 Unix 和类似 Unix 的系统上,除非另外配置,否则stderr通常直接指向终端。有关更多信息,请参见第 5.4.2.2 节“在 Unix 和类似 Unix 的系统上记录错误”

InnoDB监视器仅应在您实际希望查看监视器信息时启用,因为输出生成会导致性能降低。另外,如果将监视器输出定向到错误日志,则如果您以后忘记禁用监视器,则日志可能会变得很大。

Note

为了协助进行故障排除,InnoDB在某些情况下会暂时启用标准的InnoDB Monitor 输出。有关更多信息,请参见第 14.22 节“ InnoDB 故障排除”

InnoDB监视器输出以包含时间戳和监视器名称的 Headers 开始。例如:

=====================================
2014-10-16 18:37:29 0x7fc2a95c1700 INNODB MONITOR OUTPUT
=====================================

标准InnoDB Monitor(INNODB MONITOR OUTPUT)的 Headers 也用于锁定监视器,因为锁定监视器在添加额外的锁定信息的情况下会产生相同的输出。

innodb_status_outputinnodb_status_output_locks系统变量用于启用标准的InnoDB Monitor 和InnoDB Lock Monitor。

启用或禁用InnoDB监视器需要PROCESS特权。

启用标准 InnoDB 监视器

通过将innodb_status_output系统变量设置为ON来启用标准InnoDB Monitor。

SET GLOBAL innodb_status_output=ON;

要禁用标准InnoDB Monitor,请将innodb_status_output设置为OFF

关闭服务器时,innodb_status_output变量设置为默认的OFF值。

启用 InnoDB 锁定监视器

InnoDB Lock Monitor 数据与InnoDB Standard Monitor 输出一起打印。必须同时启用InnoDB标准监视器和InnoDB锁定监视器,才能定期打印InnoDB锁定监视器数据。

要启用InnoDB Lock Monitor,请将innodb_status_output_locks系统变量设置为ON。必须同时启用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_status_outputinnodb_status_output_locks变量设置为默认的OFF值。

Note

要为_启用InnoDB锁定监视器,只需要启用innodb_status_output_locks即可。

按需获取标准 InnoDB 监视器输出

作为启用标准InnoDB Monitor 定期输出的一种替代方法,您可以使用显示引擎的 INNODB 状态 SQL 语句按需获取标准InnoDB Monitor 的输出,该语句将输出提取到 Client 端程序。如果您使用的是mysql交互式 Client 端,则用\G替换常规的分号语句终止符时,输出将更具可读性:

mysql> SHOW ENGINE INNODB STATUS\G

如果启用了InnoDB锁定监视器,则显示引擎的 INNODB 状态输出还包括InnoDB锁定监视器数据。

将标准 InnoDB 监视器输出定向到状态文件

通过在启动时指定--innodb-status-file选项,可以启用标准InnoDB监视器输出并将其定向到状态文件。使用此选项时,InnoDB在数据目录中创建一个名为innodb_status.pid的文件,并大约每 15 秒将输出写入一次。

正常关闭服务器后,InnoDB将删除状态文件。如果发生异常关闭,则可能必须手动删除状态文件。

--innodb-status-file选项仅供临时使用,因为生成的输出会影响性能,并且innodb_status.pid文件会随着时间变得很大。