启用 InnoDB Monitor 定期输出 - xiaoboluo768/qianjinliangfang GitHub Wiki
- 当 InnoDB Monitor 启用了定期输出时,InnoDB 每隔15秒将输出信息写入mysqld 标准错误输出中(error log),innodb_status_output和innodb_status_output_locks系统变量分别用于启用标准InnoDB Monitor和InnoDB Lock Monitor。例如:
# 启用/禁用 标准InnoDB Monitor,通过将innodb_status_output系统变量设置为ON来启用,设置为OFF来禁用
SET GLOBAL innodb_status_output = ON/OFF;
# 启用/禁用 InnoDB Lock Monitor(InnoDB Lock Monitor 使用InnoDB Standard Monitor输出打印,必须启用InnoDB标准Monitor和InnoDB Lock Monitor 才能定期打印InnoDB Lock Monitor数据)
SET GLOBAL innodb_status_output = ON/OFF;
SET GLOBAL innodb_status_output_locks = ON/OFF;
# 注,如果要在使用SHOW ENGINE INNODB STATUS时输出InnoDB Lock Monitor数据,只需启用innodb_status_output_locks=ON即可(无需启用innodb_status_output = ON)
-
可以将标准InnoDB Monitor 输出定向到状态文件
- 在启动Server时指定--innodb-status-file选项,可以将标准InnoDB Monitor输出并将其定向到状态文件中。使用此选项时,InnoDB会在数据目录中创建一个名为innodb_status.pid的文件,并每隔15秒将输出写入其中。当Server正常关闭时,InnoDB会删除状态文件。但如果发生异常关闭,则可能未成功删除该文件,需要手动删除。
- PS:--innodb-status-file选项是用于临时使用的,启用监控状态会影响性能,另外,使用完之后需要及时关闭,否则innodb_status.pid文件会随着时间的推移变得非常大
-
使用如下语句登录到数据库中执行查询
root@localhost : (none):26: > show engine innodb status\G;
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
2018-05-25 23:28:20 0x7f1e1c242700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 49 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 7716 srv_active, 0 srv_shutdown, 36436 srv_idle
srv_master_thread log flush and writes: 0
----------
SEMAPHORES
----------
......
- PS:
- 除了使用系统配置参数来启用定期输出之外,也可以使用计划任务结合SHOW ENGINE INNODB STATUS 语句来定期获取InnoDB Monitor输出
- 在Windows上,除非单独配置(log-error选项),否则stderr将定向到默认的日志文件。如果要将输出定向到控制台窗口而不是错误日志,则需要在控制台窗口(命令提示符)中使用--console选项启动Server
- 在Unix和类Unix系统上,除非单独配置(log-error选项),否则stderr通常会定向到终端中
- 启用或禁用InnoDB Monitor 功能需要操作用户具有PROCESS权限
上一篇:附录B show engine innodb status详解目录 | 下一篇:status头部