MySQL資料庫InnoDB壞頁處理修復
一、InnoDB壞頁出現情況
由於物理磁碟、記憶體故障、突然斷電、強制關機、強制殺死MySQL程式等可能會造成資料壞頁現象,資料庫例項會不斷重啟。
錯誤日誌內報如下錯誤:
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page
現根據以上現象,對該問題進行處理分析。本方案針對InnoDB引擎進行壞頁修復。進行災難恢復大機率會造成造成一部分資料的丟失。
二、InnoDB壞頁修復步驟
本文件只介紹使用innodb_force_recovery引數進行資料庫強制開啟的方式。
2.1 對資料目錄進行冷備
關閉資料庫例項,對資料目錄進行冷備。
shell> tar –cvf data.tar data
2.2 檢視錯誤日誌內容
查詢錯誤日誌路徑
SQL> show variables like 'log_error'; +---------------+------------+ | Variable_name | Value | +---------------+------------+ | log_error | ./test.err | +---------------+------------+
注:該路徑即為datadir目錄下
shell> tail -3000f /var/lib/mysql/data/test.err
判斷此時資料庫是否已經無法正常執行
2.3 修改相關引數啟動服務
shell> vi /etc/my.cnf innodb_force_recovery=1
注:
innodb_force_recovery = 2~6,依次啟動伺服器直至可以訪問有問題的表。
innodb_force_recovery引數解析
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):不執行前滾的操作。
2.4 進行全庫匯出
shell> mysqldump -uroot -pmysql --master-data=2 -E -R --all-databases > full.sql
2.5 新環境同版本初始化環境
shell> /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/var/lib/mysql --user=mysql
注:basedir/datadir根據實際情況修改
2.6 新環境匯入資料
shell> mysql -uroot -p < full.sql
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2786428/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL資料庫INNODB表損壞修復處理過程分享MySql資料庫
- SQL Server 資料頁損壞修復SQLServer
- SQLite資料庫損壞及其修復探究SQLite資料庫
- 如何修復mysql資料庫MySql資料庫
- 伺服器Oracle資料庫損壞修復伺服器Oracle資料庫
- SQL Anywhere db檔案損壞修復 DB檔案修復 DB資料庫修復SQL資料庫
- 【LINUX】Oracle資料庫 linux磁碟頭資料損壞修復LinuxOracle資料庫
- InterBase資料庫檔案損壞的修復方法資料庫
- 伺服器資料庫損壞能修復嘛伺服器資料庫
- redo損壞修復啟動資料庫辦法資料庫
- 織夢資料庫配置檔案資料庫損壞:嘗試修復資料庫資料庫
- 資料恢復記錄:硬碟分割槽損壞修復SqlServer資料庫過程資料恢復硬碟SQLServer資料庫
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 一次ORACLE資料庫undo壞塊處理Oracle資料庫
- 資料庫修復資料恢復資料庫資料恢復
- 記一次 MySQL 資料庫單表恢復事故處理MySql資料庫
- system資料檔案頭損壞修復
- Interbase資料庫修復資料庫
- Firebird資料庫修復資料庫
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【Mysql】InnoDB 引擎中的資料頁結構MySql
- 一個簡單易用的資料庫壞塊處理方案資料庫
- Oracle資料庫處理壞塊問題常用命令Oracle資料庫
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 生產環境故障處理演練-mysql資料庫主從恢復MySql資料庫
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- MySQL資料庫innodb_fast_shutdown引數MySql資料庫AST
- 處理恢復資料方法
- 資料恢復工具Recoverit使用教程:如何修復損壞的影片資料恢復
- 資料庫資料恢復-SQL SERVER資料庫MDF (NDF)或LDF損壞如何恢復資料?資料庫資料恢復SQLServer
- RMAN修復壞塊
- mysql,sqlserver資料庫單表資料過大的處理方式MySqlServer資料庫
- mysql innodb_deadlock_detect檢測和處理MySql
- WPS文件損壞如何修復?WPS文件損壞的修復方法
- sqlsever處理資料庫的恢復掛起狀態SQL資料庫
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- 伺服器資料損壞有辦法修復嗎?伺服器