修複崩潰的Mysql

來源:互聯網
上載者:User

標籤:結果   匯入   儲存   use   dump   設定檔   isa   運行   recover   

在mysql的設定檔my.cnf裡找到 [mysqld]欄位下,添加 innodb_force_recovery = 1

如果innodb_force_recovery = 1不生效,則可嘗試2——6幾個數字
然後重啟mysql,重啟成功。然後使用mysqldump或 pma 匯出資料,執行修複操作等。修複完成後,把該參數注釋掉,還原預設值0。
設定檔的參數:innodb_force_recovery
innodb_force_recovery影響整個InnoDB儲存引擎的恢複狀況。預設為0,表示當需要恢複時執行所有的恢複操作(即校正資料頁/purge undo/insert buffer merge/rolling back&forward),當不能進行有效恢複操作時,mysql有可能無法啟動,並記錄錯誤記錄檔;
innodb_force_recovery可以設定為1-6,大的數字包含前面所有數位影響。當設定參數值大於0後,可以對錶進行select,create,drop操作,但insert,update或者delete這類操作是不允許的。

 具體介紹

1(SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁。

2(SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執行full purge操作,會導致crash。

3(SRV_FORCE_NO_TRX_UNDO):不執行交易回復操作。

4(SRV_FORCE_NO_IBUF_MERGE):不執行插入緩衝的合併作業。

5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日誌,InnoDB儲存引擎會將未提交的事務視為已提交。

6(SRV_FORCE_NO_LOG_REDO):不執行前滾的操作。

三、解析方案

一般修複方法參考:

第一種方法

建立一張新表:
create table demo_bak  #和原表結構一樣,只是把INNODB改成了MYISAM。
把資料導進去
insert into demo_bak select * from demo;
刪除掉原表:
drop table demo;
注釋掉 innodb_force_recovery 之後,重啟。
重新命名:
rename table demo_bak to demo;
最後改回儲存引擎:
alter table demo engine = innodb

第二種方法

另一個方法是使用mysqldump將表格匯出,然後再導回到InnoDB表中。這兩種方法的結果是相同的。 
備份匯出(包括結構和資料):
mysqldump -uroot -p123 test > test.sql
還原方法1:
use test;
source test.sql
還原方法2(系統命令列):
mysql -uroot -p123 test < test.sql;
注意,CHECK TABLE命令在InnoDB資料庫中基本上是沒有用的。

第三種方法

1、配置my.cnf

配置innodb_force_recovery = 1或2——6幾個數字,重啟MySQL

2、匯出資料指令碼

mysqldump -uroot -p123 test > test.sql
匯出SQL指令碼。或者用Navicat將所有資料庫/表匯入到其他伺服器的資料庫中。
注意:這裡的資料一定要備份成功。然後刪除原資料庫中的資料。

3、刪除ib_logfile0、ib_logfile1、ibdata1

備份MySQL資料目錄下的ib_logfile0、ib_logfile1、ibdata1三個檔案,然後將這三個檔案刪除

4、配置my.cnf

將my.cnf中innodb_force_recovery = 1或2——6幾個數字這行配置刪除或者配置為innodb_force_recovery = 0,重啟MySQL服務

5、將資料匯入MySQL資料庫

mysql -uroot -p123 test < test.sql; 或者用Navicat將備份的資料匯入到資料庫中。
此種方法下要注意的問題:
  1、ib_logfile0、ib_logfile1、ibdata1這三個檔案一定要先備份後刪除;
  2、一定要確認原資料匯出成功了
  3、當資料匯出成功後,刪除原資料庫中的資料時,如果提示不能刪除,可在命令列進入MySQL的資料目錄,手動刪除相關資料庫的檔案夾或者資料庫檔案夾下的資料表檔案,前提是資料一定匯出或備份成功。

 

修複崩潰的Mysql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.