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