MySQL Shell 8.4  /  ...  /  collectDiagnostics 工具

11.8.1 collectDiagnostics 工具

偵錯和診斷工具 util.debug.collectDiagnostics() 可讓您收集 MySQL 伺服器上的診斷資料。

關於此工具

診斷報告會以 zip 檔案的形式產生到本機目錄或指定的路徑。

util.debug.collectDiagnostics() 可讓您從獨立伺服器、複寫拓撲的成員、InnoDB 叢集和 MySQL HeatWave Service 資料庫系統收集原始診斷資料。

此工具會產生 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,則會忽略用於產生診斷報告的查詢所產生的任何錯誤。

customSql: array

要執行的一或多個 SQL 陳述式。

例如

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

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

例如

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

這些命令會使用執行 MySQL Shell 的使用者的權限執行,應謹慎使用。