文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用伺服器日誌尋找 mysqld 中的錯誤原因

7.9.1.6 使用伺服器日誌尋找 mysqld 中的錯誤原因

請注意,在啟用一般查詢日誌的情況下啟動 mysqld 之前,您應該使用 myisamchk 檢查您的所有資料表。請參閱 第 7 章,MySQL 伺服器管理

如果 mysqld 停止或掛起,您應該在啟用一般查詢日誌的情況下啟動 mysqld。請參閱 第 7.4.3 節,〈一般查詢日誌〉。當 mysqld 再次停止時,您可以檢查日誌檔的結尾,以找出導致 mysqld 停止的查詢。

如果您使用預設的一般查詢日誌檔,則該日誌會儲存在資料庫目錄中,檔名為 主機名稱.log。在大多數情況下,導致 mysqld 停止的是日誌檔中的最後一個查詢,但如果可以,您應該重新啟動 mysqld,並從 mysql 命令列工具執行找到的查詢,藉此驗證此情況。如果此方法有效,您也應該測試所有未完成的複雜查詢。

您也可以嘗試對所有耗時較長的 SELECT 陳述式執行 EXPLAIN 命令,以確保 mysqld 正確使用索引。請參閱 第 15.8.2 節,〈EXPLAIN 陳述式〉

您可以透過在啟用慢速查詢日誌的情況下啟動 mysqld 來找出執行時間較長的查詢。請參閱 第 7.4.5 節,〈慢速查詢日誌〉

如果在錯誤日誌(通常是名為 host_name.err 的檔案)中發現文字 mysqld restarted,則您可能找到了一個導致 mysqld 失敗的查詢。如果發生這種情況,您應該使用 myisamchk 檢查所有表格(請參閱 第 7 章,MySQL 伺服器管理),並測試 MySQL 日誌檔案中的查詢,以查看是否有查詢失敗。如果您找到這樣的查詢,請先嘗試升級到最新的 MySQL 版本。如果這沒有幫助,請回報錯誤,請參閱 第 1.6 節,「如何回報錯誤或問題」

如果您啟動 mysqld 時設定了 myisam_recover_options 系統變數,MySQL 會自動檢查並嘗試修復被標記為「未正確關閉」或「崩潰」的 MyISAM 表格。如果發生這種情況,MySQL 會在 hostname.err 檔案中寫入一個條目 'Warning: Checking table ...',如果該表格需要修復,則後面會接著 Warning: Repairing table。如果您收到許多這樣的錯誤,但 mysqld 並未在之前意外終止,那麼表示有問題,需要進一步調查。請參閱 第 7.1.7 節,「伺服器命令選項」

當伺服器偵測到 MyISAM 表格損壞時,它會將額外資訊寫入錯誤日誌,例如原始程式檔案的名稱和行號,以及存取表格的執行緒清單。例如:Got an error from thread_id=1, mi_dynrec.c:368。這些資訊在錯誤回報中很有用。

如果 mysqld 意外終止,這並不是一個好兆頭,但在這種情況下,您不應該調查 Checking table... 訊息,而應該嘗試找出 mysqld 終止的原因。