《Mysql實例MySQL數據庫表修復 MyISAM》要點:
本文介紹了Mysql實例MySQL數據庫表修復 MyISAM,希望對您有用。如果有疑問,可以聯系我們。
一:MySQL中MyISAM表毀壞原因總結:MYSQL入門
1、 服務器突然斷電導致數據文件損壞;強制關機,沒有先關閉mysql 服務;mysqld 進程在寫表時被殺掉.
2、 磁盤損壞.
3、 服務器死機.
4、 mysql 自己的bug .MYSQL入門
二:MySQL中MyISAM表毀壞的癥狀總結:MYSQL入門
1 、查詢數據時報出錯誤:Incorrect key file for table: '...'. Try to repair it
2 、查詢不克不及在表中找到行或返回不完全的數據.
3 、Error: Table '...' is marked as crashed and should be repaired .
4 、打開表失敗: Can't open file: ‘×××.MYI' (errno: 145) .MYSQL入門
三:MySQL中MyISAM表毀壞的預防:MYSQL入門
1 、定期檢查MyISAM 表.可以使用myisamchk,也可以使用mysqlcheck,還可以使用check table.
2 、在做過大量的更新或刪除操作后,使用mysqlcheck或者optimize table來優化表,這樣既減少了文件碎片,又減少了表損壞的概率. 3 、關閉服務器前,先關閉mysqld (正常關閉服務,不要使用kill -9 來殺進程).
4 、使用ups 電源,避免出現突然斷電的情況.
5 、使用最新的穩定發布版mysql ,減少mysql 自己的bug 導致表損壞.
6 、對磁盤做raid ,減少磁盤出錯并提高性能.
7 、數據庫服務器最好只跑mysqld 和必要的其他服務,不要跑其他業務服務,這樣減少死機導致表損壞的可能.MYSQL入門
四:MySQL中MyISAM表毀壞的修復總結:MYSQL入門
1 、如果mysqld已經宕掉,且無法啟動,那么可以通過mysiamchk工具來進行修復.此工具在mysqld服務沒有啟動時才可以使用.該工具可以檢查并分析修復MyISAM表.
2 、如果mysqld仍在運行,或者可以重新啟動,那么可以通過mysqlcheck工具來進行修復.或者直接通過mysql的內置修復SQL語句來修復:CHECK TABLE,REPAIR TABLE ,ANALYSE TABLE,OPTIMIZE TABLE.這兩種辦法可以同樣達到對表的修復作用. 以上兩種方式各有應用場景.MYSQL入門
MySQL數據表毀壞的巧妙修復 修復mysql表之前首先要知道是哪個表出了問題MYSQL入門
可以用root登錄后在information_schema里查找有問題的表名MYSQL入門
select TABLE_SCHEMA as DB_DBNAME,TABLE_NAME from INFORMATION_SCHEMA.tables where engine is null;MYSQL入門
可以通過變亂查看器里是否有MYSQL入門
應用程序日志--類型為"錯誤"--變亂來源為"Mysql"的錯誤日志,大概內容為MYSQL入門
1 xxxxx: Table '.xxxx' is marked as crashed and should be repairedMYSQL入門
或者直接在phpmyadmin中查看有哪些表出了問題好比顯示“使用中”MYSQL入門
如果查到問題表后,可以使用一下敕令來修復mysql數據庫中的MYISAM表MYSQL入門
1、check, repairMYSQL入門
例如abc的test表有問題MYSQL入門
2. myisamchk, isamchkMYSQL入門
其中myisamchk適用于MYISAM類型的數據表,而isamchk適用于ISAM類型的MySQL數據表.這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行闡明.當發現某個數據表出現問題時可以使用:MYSQL入門
myisamchk tablename.MYIMYSQL入門
進行檢測,如果必要修復的話,可以使用:MYSQL入門
myisamchk -of tablename.MYIMYSQL入門
關于myisamchk的詳細參數說明,可以參見它的使用幫助.需要注意的時在進行修改時必須確保MySQL服務器沒有拜訪這個MySQL數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉.MYSQL入門
mysqladmin -uroot -p shutdownMYSQL入門
另外可以把下面的敕令放在你的rc.local里面啟動MySQL服務器前:MYSQL入門
[ -x /tmp/MySQL.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYIMYSQL入門
其中的/tmp/MySQL.sock是MySQL監聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/MySQL/MySQL.sock,對于使用源碼安裝則是/tmp/MySQL.sock可以根據本身的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置.MYSQL入門
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必需確認在執行這條指令時MySQL服務器必需沒有啟動!MYSQL入門
3、檢測修復所稀有據庫(表)MYSQL入門
歡迎參與《Mysql實例MySQL數據庫表修復 MyISAM》討論,分享您的想法,維易PHP學院為您提供專業教程。