MySQL Shell 9.0  /  ...  /  collectDiagnostics 公用程式

11.8.1 collectDiagnostics 公用程式

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

關於公用程式

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

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

此公用程式會產生 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 Cluster) 的所有成員產生診斷,並 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 的使用者的權限來執行,因此應謹慎使用。