如何處理Mysql報錯
1. 環境: 此例針對的是 Mysql 數據庫 在 windows 平臺下的報錯處理; Linux非常類似, 只是安裝目錄不同;
2. 現象: 數據庫無法啟動, 網站訪問時因不能從數據庫獲取數據, 頁面顯示不完整且報錯, 影響用戶體驗;
3. 問題如下:
提問: 你好, 我訪問網時候報錯如下, 我應該怎么判斷是不是數據庫的問題?
回答: 根據報錯提示, 源代碼連接數據庫時無法連接, 你可以使用cmd命令: netstat –an | find “:3306” 確定下數據庫是否在監聽 , 以及mysql 在任務管理器里面是否有進程; (訪問網站abc.com 時, 瀏覽器提示報錯如下)
提問: 請問一下, 如數據庫正在運作 ,但是依然報以上錯誤, 應該如何處理?
回答: 首先你要啟動cmd 終端, 然后基于絕對路徑, 執行mysql 命令, 例如: 開始 -> 運行-> cmd -> D:/hosting/system/Mysql/Mysql , 進入管理界面后, show variables like ‘%error%’; 即可找到錯誤日志所在的絕對路徑(例如 D:/hosting/system/Mysql/mysql_error.log ) ; 打開錯誤日志后可根據報錯提示進行處理; 例如下面
由于某個表的屬性文件 hs.frm 損壞, 導致數據庫無法啟動; 最后hs.frm 表刪除后, 數據庫運作正常;
提問: 數據庫起不來是什么原因?
回答: 請根據錯日日志報錯提示處理, 例如上面的例子就是 數據表損壞, 導致不穩定, 數據庫啟動后5分鐘, hs.frm 表被訪問, 數據庫自動關閉, 處理該表后數據庫運作正常;
提問: 如果 hs表異常, 里面內容有損壞, 當時你們是如何處理的?
回答: 由于Mysql 實例中, 約承載了100個數據庫, hs表只是其中一個庫的其中一個表, 刪除他后可以使得其他99個數據庫運作正常 ,消除網站報錯問題; 當時我們根據抓大放小原則, 先刪除了 hs表相關文件, 例如 hs.frm表屬性文件(如文件修改日期) , hs.MYD數據文件 hs.MYI索引文件 ; 然后數據庫即可運作正常;
提問: hs表被刪除了, 對網站會造成什么影響? 能否恢復呢?
回答: hs表只是其中一個網站子頁面所以來的表, 刪除后, 只有某個分支產品頁面不能顯示; 影響不大; 由于數據庫定期有備份, 我們建議客戶利用備份數據進行還原, 恢復單個表即可; 當然首先要在備份機上 mysqldump –u”用戶名” –p”密碼” “庫名”.”表名” > hs.sql 導出hs表, 然后在目標機上執行還原操作: mysql –u”用戶名” –p”密碼” “庫名”.”表名” < hs.sql ;