一次innodb數(shù)據(jù)恢復(fù)實(shí)例 |
發(fā)布時(shí)間: 2012/9/5 17:05:18 |
周末的時(shí)候,開發(fā)人員在使用一臺機(jī)器做測試,安裝了一個(gè)一鍵安裝包lnmp。結(jié)果把這臺機(jī)器上的原來rpm安裝的mysql-server搞掛了,后來不知道他們怎么弄的,把mysql-server存儲在/var/lib/mysql 下的文件損壞了一些 導(dǎo)致查找不到表里的數(shù)據(jù) .我本地登陸進(jìn)去后,發(fā)現(xiàn)沒有mysql這個(gè)庫了,繼續(xù)看表,可以顯示到表 ,但是找不到表里的數(shù)據(jù).看了下錯(cuò)誤日志,報(bào)沒有權(quán)限訪問這個(gè)表。周一和北京那邊負(fù)責(zé)維護(hù)這臺機(jī)器的人聯(lián)系后,結(jié)果如下:沒有做備份,沒有二進(jìn)制日志,也不知道用得啥引擎。這臺機(jī)器交接給我們這邊的開發(fā)人使用時(shí)沒有做特別說明,開發(fā)也不知道上面跑了個(gè)mysql,F(xiàn)在出了這個(gè)問題,沒辦法,我來弄了只有.仔細(xì)檢查/var/lib/mysql 目錄下,確定引擎為innodb,共享數(shù)據(jù)庫文件還在,表的結(jié)構(gòu)文件也還在,redolog也還在,還好,問題不大。接下來采用如下步驟恢復(fù)數(shù)據(jù)庫: 1、恢復(fù)原數(shù)據(jù)庫的配置文件:包括日志大小 文件路徑等 2、在[mysqld]段中增加:innodb_force_recovery = 4 3、可以在另外地方建立新的數(shù)據(jù)庫并用原表的結(jié)構(gòu)創(chuàng)建表 4、將上一步中建立的.frm表文件拷貝到準(zhǔn)備恢復(fù)的數(shù)據(jù)庫中 5、啟動數(shù)據(jù)庫 6、停止數(shù)據(jù)庫 注釋掉innodb_force_recovery = 4項(xiàng) 7、重新啟動數(shù)據(jù)庫,應(yīng)該可以用mysqldump導(dǎo)出數(shù)據(jù)了 表結(jié)構(gòu)文件應(yīng)該可以憑借你的記憶恢復(fù)關(guān)鍵是ibdata數(shù)據(jù)完好 用導(dǎo)出的sql重新入庫
本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |