偵錯和診斷公用程式 util.debug.collectDiagnostics()
可讓您收集 MySQL 伺服器上的診斷資料。
診斷報告會以 zip 檔案的形式產生到本機目錄或指定的路徑。
util.debug.collectDiagnostics()
可讓您從獨立伺服器、複寫拓樸的成員、InnoDB Cluster 和 MySQL HeatWave Service DB 系統收集原始診斷資料。
此公用程式會產生 TSV 和 YAML 格式的檔案。
診斷公用程式具有下列簽章
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
的輸出。此選項會產生下列其他報告
innodb_mutex
:列出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 的使用者的權限來執行,因此應謹慎使用。