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