MySQL 數(shù)據(jù)庫壞表修復
10余年的烏當網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整烏當建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“烏當網(wǎng)站設計”,“烏當網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
蘿卜白菜,各有所愛,能干活、能修復表才是王道?。?!
修復之前謹記:先備份數(shù)據(jù)庫(備份完成后再進行以下修復操作)
可以mysqldump -A > all.sql 進行全庫備份 (mysqldump導出錯誤的時候可以省略錯誤的表進行導出其他的數(shù)據(jù)添加選項 --ignore-table=table_name ) 也可以進入到/usr/local/shell/ 執(zhí)行 mysql_backup.sh進行備份數(shù)據(jù)庫 以上兩種方式都不可以備份 可以進入到/data/mysql/3306目錄里面將以下所有文件信息copy一份
針對MyIsam表進行修復方法
1.描述:
在數(shù)據(jù)庫可以進入 mysql程序正常,只有日志中拋有tables錯誤的時候使用以下修復:
mysql> REPAIR TABLE 表名
3.描述:
在數(shù)據(jù)庫不能進入、數(shù)據(jù)庫程序不能夠正常啟動的時候使用
mysqlcheck -Aor (此命令在數(shù)據(jù)庫外執(zhí)行,針對所有myisam的數(shù)據(jù)庫表進行修復 -A=所有all、-o, --optimize 進行對索引優(yōu)化【重新整理索引】-r, --repair 修復 )
shell# mysqlcheck -Aor 執(zhí)行的時候會拋出錯誤(凡是innodb表都會拋錯誤)
在知道是那個表錯誤的情況下可以使用以下命令進行修復 (后續(xù)可以添加-f選項 force 強制修復,慎用此選項操作)
shell# myisamchk -oar tables.MYI
針對Innodb表修復方法
1.描述:
數(shù)據(jù)庫可以進入 mysql程序正常,只有日志中拋有tables錯誤的時候使用以下修復:
1、通過mysqldump將錯誤的表進行導出(僅導出數(shù)據(jù)即可),確定導出沒有問題!
2、進入mysql truncate table 表名
3、通過mysql命令將剛才導出的數(shù)據(jù)庫數(shù)據(jù)灌入即可搞定
2.描述:
可參考 http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
數(shù)據(jù)庫無法正常啟動,日志中存在表錯誤,index錯誤信息 修復:
1、在my.cnf文件里面添加
[mysqld]
innodb_force_recovery = 1 (1級別最低通常只是作為跳過表錯誤正常啟動mysql服務)
級別越高,修復難度越大、 (1-6)
1(SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁。
2(SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執(zhí)行full purge操作,會導致crash。
3(SRV_FORCE_NO_TRX_UNDO):不執(zhí)行事務回滾操作。
4(SRV_FORCE_NO_IBUF_MERGE):不執(zhí)行插入緩沖的合并操作。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交。
6(SRV_FORCE_NO_LOG_REDO):不執(zhí)行前滾的操作。
2、能夠正常啟動mysql后,上層應用不用啟動、防止寫入數(shù)據(jù)出現(xiàn)錯誤
進入mysql 進行更改錯誤表的信息
mysql> alter table table_name ENGINE=myisam;
修改完成后使用Myisam的修復方式進行修復
修復完成之后將表更改為innodb 、my.cnf 文件的innodb_force_recovery = 1 注釋掉之后重新啟動mysql注意觀察日志是否拋錯
3、通過數(shù)據(jù)庫備份加binlog日志進行恢復,步驟過多,不予寫出
仍然可以參考 http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
進行恢復