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_output和innodb_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_output和innodb_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
文件会随着时间变得很大。