MySQL Shell 8.4  /  ...  /  collectHighLoadDiagnostics 实用程序

11.8.2 collectHighLoadDiagnostics 实用程序

关于此实用程序

util.debug.collectHighLoadDiagnostics() 在您的 MySQL 服务器上运行多次诊断报告迭代,使您能够在负载情况下分析服务器的多个方面。

高负载诊断报告以 zip 文件的形式生成到本地目录或指定的路径。

该实用程序生成 TSV 和 YAML 格式的文件。

要求和限制

以下要求适用于使用诊断信息收集实用程序进行的导出

  • 需要 MySQL 5.7 或更高版本。

  • 必须以 root 用户身份运行该实用程序。

运行实用程序

诊断实用程序具有以下签名

  util.debug.collectHighLoadDiagnostics(path, {options})

以下示例将 zip 文件写入用户的临时目录,执行 5 次收集迭代,并启用所有性能模式检测工具和使用者

      util.debug.collectHighLoadDiagnostics("/home/userName/temp/highLoad.zip", {iterations: 5, pfsInstrumentation: "full"})
注意

此实用程序返回的数据还包括 util.debug.collectDiagnostics() 收集的数据。

收集高负载诊断信息的选项

iterations: 数字

默认值为 2。高负载诊断数据收集的迭代次数。

delay: 数字

默认值为 300 秒。高负载诊断数据收集的两次迭代之间的时间(以秒为单位)。

innodbMutex: [true | false]

默认值为 false。如果设置为 true,则收集 SHOW ENGINE INNODB MUTEX 的输出。

注意

此参数可能会影响性能。

pfsInstrumentation: [current | medium | full]

默认值为 current。定义使用哪些性能模式检测工具和使用者。可能的值为

  • current: 当前启用的性能模式检测工具和使用者。不会更改服务器的配置。

  • medium: 启用除 %history%history_long 之外的所有使用者,以及除 wait/synch/% 之外的所有检测工具。

  • full: 启用所有使用者和所有检测工具。

customSql: 数组

要运行的一个或多个 SQL 语句。您可以使用以下前缀控制何时运行语句

  • PRE: 默认值。在指标收集迭代开始之前,该语句运行一次。

  • POST: 在指标收集迭代完成后,该语句运行一次。

  • ITER: 对于指标收集的每次迭代,该语句运行一次。

例如

            {"customSql": ["statement1", "statement2", "statement3"]}
customShell 数组

要运行的一个或多个 Shell 命令。您可以使用以下前缀控制何时运行命令

  • BEFORE: 默认值。在指标收集迭代开始之前,该语句运行一次。

  • DURING: 对于指标收集的每次迭代,该语句运行一次。

  • AFTER: 在指标收集迭代完成后,该语句运行一次。

例如

            {"customShell": ["command1", "command2", "command3"]}
重要

这些命令使用运行 MySQL Shell 的用户的权限运行,应谨慎使用。