當數(shù)據(jù)庫出現(xiàn)損壞時,應(yīng)優(yōu)先保證現(xiàn)有數(shù)據(jù)的完整。在恢復時需要依次使用不同的模式。即先使用第一種模式,失敗后依次嘗試其余的模式,直到可以將數(shù)據(jù)讀取出來為止。注意,不能在MySQL運行過程中在提示符下直接修改該參數(shù)。例如直接執(zhí) 行“set innodb_force_recovery=2;”,MySQL 會提示該參數(shù)處于只讀狀態(tài)而拒絕修改。只能在配置文件中進行修改,并重啟數(shù)據(jù)庫使之生效。
當設(shè)置好恢復模式后,創(chuàng)建一個新表,使用MYISAM存儲引擎用于恢復數(shù)據(jù)。因為原有的InnoDB數(shù)據(jù)表已經(jīng)損壞,自然無法直接使用。當開啟恢復模式后,所有的InnoDB數(shù)據(jù)表不能處于只讀狀態(tài),不能導入數(shù)據(jù),因此只能使用MYISAM引擎來恢復數(shù)據(jù)。接著使用“Insert Into”命令,從原數(shù)據(jù)表中讀取數(shù)據(jù),將其導入新的數(shù)據(jù)表中。然后利用“Drop”命令刪除原有的表,利用“Rename”命令,將新的表更名為原有的表,最后,將數(shù)據(jù)庫引擎修改 為 InnoDB,將“innodb_force_recovery”的只設(shè)置為0,并重啟數(shù)據(jù)庫。