請注意,在啟動啟用一般查詢日誌的 mysqld 之前,您應該使用 myisamchk 檢查所有表格。請參閱第 7 章,MySQL 伺服器管理。
如果 mysqld 停止運作或停滯,您應該啟動啟用一般查詢日誌的 mysqld。請參閱第 7.4.3 節,「一般查詢日誌」。當 mysqld 再次停止運作時,您可以檢查日誌檔的結尾,以找出導致 mysqld 停止運作的查詢。
如果您使用預設的一般查詢日誌檔,則日誌會儲存在資料庫目錄中,名稱為
。在大多數情況下,導致 mysqld 停止運作的是日誌檔中的最後一個查詢,但如果可以,您應該重新啟動 mysqld 並從 mysql 命令列工具執行找到的查詢,藉此驗證此情況。如果這可以運作,您也應該測試所有未完成的複雜查詢。主機名稱
.log
您也可以嘗試在所有需要長時間執行的 SELECT
陳述式上使用 EXPLAIN
命令,以確保 mysqld 正確地使用索引。請參閱第 15.8.2 節,「EXPLAIN 陳述式」。
您可以藉由啟動啟用慢速查詢日誌的 mysqld,找出需要長時間執行的查詢。請參閱第 7.4.5 節,「慢速查詢日誌」。
如果您在錯誤日誌 (通常是名為
的檔案) 中找到文字 主機名稱
.errmysqld 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 終止的原因。