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