MySQL Shell 9.0  /  ...  /  collectDiagnostics 实用程序

11.8.1 collectDiagnostics 实用程序

调试和诊断实用程序 util.debug.collectDiagnostics() 使您能够收集有关 MySQL 服务器的诊断数据。

关于实用程序

诊断报告作为 zip 文件生成,存储在本地目录或指定路径中。

util.debug.collectDiagnostics() 使您能够从独立服务器、复制拓扑成员、InnoDB 集群和 MySQL HeatWave 服务数据库系统收集原始诊断数据。

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

要求和限制

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

  • 需要 MySQL 5.7 或更高版本。

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

运行实用程序

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

util.debug.collectDiagnostics("path/",{options})
  • "path":您可以指定路径、文件名或路径和文件名。

    如果未提供文件名,则文件将写入指定位置,并使用文件名 mysql-diagnostics-YYYYMMDD-HHMMSS.zip

    如果提供了文件名但未提供路径,则文件将写入当前目录。

  • options:可以省略的选项字典(如果为空)。有关可用选项,请参阅 收集诊断的选项

    如果未定义选项,则该实用程序将生成一组默认诊断。每个选项都会在输出中添加一个或多个报告。

以下示例在 2022 年 4 月 6 日上午 10:02:06 运行,在 C:/Temp/ 目录中生成一组默认诊断,即 mysql-diagnostics-20220406-100206.zip

util.debug.collectDiagnostics("C:/Temp/")

以下示例在 C:/Temp/ 目录中生成一组默认诊断,文件名是 myDiagnostics.zip

util.debug.collectDiagnostics("C:/Temp/myDiagnostics.zip")

尾随斜杠是定义路径所必需的。如果您省略它,则该实用程序将在名为路径的路径中创建名为 Temp.zip 的文件。例如 C:/Temp.zip。无法覆盖现有文件。

主机信息 (host_info) 仅从 localhost 收集。无法从远程主机收集主机信息。如果您的 MySQL 服务器在远程主机上运行,则只收集 MySQL 服务器信息。

在 Microsoft Windows 平台上,主机信息是使用 MSInfo 实用程序收集的。这将在实用程序运行时打开一个额外的进度对话框。

收集诊断的选项

allMembers: [true|false]

默认值为 false。如果设置为 true,则会为受管理拓扑(如 InnoDB 集群)的所有成员生成诊断,并 ping 拓扑中的每个成员。每个诊断都以一个数字为前缀,1(一个)表示 MySQL Shell 连接到的服务器,并且每个检测到的成员都会递增。

仅当 Shell 连接到 localhost 上的拓扑成员时才会生成 ping 结果 (ping.txt)。无法从远程主机请求 ping 结果。

allMembers: true 不会创建其他报告。所有收集的数据都包含在默认报告中。

innodbMutex: [true|false]

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

此选项会生成以下其他报告

注意

此选项可能会影响性能。

schemaStats: [true|false]

默认值为 false。如果设置为 true,则会收集架构大小统计信息。

此选项会生成以下其他报告

  • schema_object_overview:列出 schema_object_overview 视图的内容。

  • top_biggest_tables:列出连接到服务器上的最大表以及性能缓慢指标。

slowQueries: [true|false]

默认值为 false。如果设置为 true,则会从 慢查询日志 收集慢查询信息。

此选项要求您在目标服务器上启用 slow_log 并将其输出配置为 TABLE

此选项会生成以下其他报告

  • slow_log:列出 mysql.slow_log 表的内容。

ignoreErrors: [true|false]

默认值为 false。如果设置为 true,则会忽略生成诊断报告的查询生成的任何错误。

customSqlarray

要运行的一个或多个 SQL 语句。

例如

            {"customSql": ["statement1", "statement2", "statement3"]}
customShellarray

要运行的一个或多个 shell(DOS、BOURNE 等)命令。

例如

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

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