1. 程式人生 > >MySQL Forcing InnoDB Recovery

MySQL Forcing InnoDB Recovery

Forcing InnoDB Recovery

MySQL非正常重啟或者磁碟故障可能導致MySQL資料檔案損壞。這種情況下,如果沒有可用的備份檔案則可使用innodb_force_recovery選項強制InnoDB引擎啟動。這時一些後臺操作不會執行,可以較為安全的dump出資料庫中的表。

innodb_force_recovery選項可選的值為0-6,預設也即正常情況下值為0,在發生故障需要強制啟動時可在MySQL配置檔案[mysqld]節新增innodb_force_recovery = 1配置(或者其他值)。3或者以下的值對於強制重啟後dump資料來說相對安全,可能個別損壞的頁上的一些資料會丟失。4或者以上的值相對危險因為資料檔案可能永久性的損壞。6這個值最為危險。

當innodb_force_recovery值大於0時InnoDB會阻止INSERT、UPDATE、DELETE操作。MySQL5.6.15以後4及以上的值使InnoDB為只讀模式。

幾個取值的意義:

    1 (SRV_FORCE_IGNORE_CORRUPT)

    儘管檢測到了損壞的頁扔強制伺服器執行。一本情況設定為該值即可,然後dump出庫表進行重建。
    
    2 (SRV_FORCE_NO_BACKGROUND)
    阻止master thread和任何purge thread執行。若崩潰發生在purge環節則使用該值
    
    3 (SRV_FORCE_NO_TRX_UNDO)

    崩潰恢復後不執行事務回滾
    
    4 (SRV_FORCE_NO_IBUF_MERGE)
    阻止插入緩衝合併操作。如果可能導致崩潰則不要做這些操作。不要進行統計操作。該值可能永久損壞資料檔案。若使用了該值,則將來要刪除和重建輔助索引。

    5 (SRV_FORCE_NO_UNDO_LOG_SCAN)

    啟動資料庫時不檢視undo日誌。此時InnoDB甚至把未完成的事務按照提交處理。該值可能永久性的損壞資料檔案。
    
    6 (SRV_FORCE_NO_LOG_REDO)

    恢復時不做redo log roll-forward。使資料庫頁處於廢止狀態,繼而可能引起B樹或者其他資料庫結構更多的損壞。
 
在值小於等於3時可以通過SELECT來dump表,可以drop或者create表。MySQL5.6.27後大於3的值也支援DROP TABLE;
如果事先知道哪個表導致了崩潰則可drop掉這個表。如果碰到了由失敗的大規模匯入或大量ALTER TABLE操作引起的runaway rollback,則可kill掉mysqld執行緒然後設定 innodb_force_recovery為3使資料庫重啟後不進行rollback。然後刪除導致runaway rollback的表;
如果表內的資料損毀導致不能dump整個表內容。那麼附帶ORDER BY primary_key DESC 從句的查詢或許能夠dump出損毀部分之後的部分資料;
若使用更高的innodb_force_recovery值,那麼一些損壞的資料結構可能引起復雜的查詢無法執行。此時可能只能執行最基本的SELECT * FROM T語句。

需要注意的是,這僅是緊急情況下的一種補救,不能依賴於這個辦法,最好的辦好還是做好資料備份工作,包括全備份和日誌備份。確定要使用該方案是要確保有原始損壞資料的副本。4以上的值可能永久導致資料檔案損壞。務必在測試環境測試通過後再在生產環境使用。

相關推薦

MySQL Forcing InnoDB Recovery

Forcing InnoDB Recovery MySQL非正常重啟或者磁碟故障可能導致MySQL資料檔案損壞。這種情況下,如果沒有可用的備份檔案則可使用innodb_force_recovery選項強制InnoDB引擎啟動。這時一些後臺操作不會執行,可以較為安全的dump

mysqlinnodb引擎使用方法

mysql之innodb引擎使用方法前言閑來無事做不如MySQL。一.簡介:1.Linux下使用MySQL數據庫時,為了支持事務操作需要用到InnoDB引擎,對於表中處理的插入,更新等操作失敗時,回滾前面不應該完成的操作是必須的. 2.一般MySQL默認的數據庫引擎是MyISAM,不支持事務和外鍵,則可使用支

mysqlInnoDB存儲引擎的行鎖和表鎖

nbsp 大於 依然 自帶 打折 一個 系統 指定 任務 Mysql的InnoDB存儲引擎支持事務,默認是行鎖。因為這個特性,所以數據庫支持高並發,但是如果InnoDB更新數據的時候不是行鎖,而是表鎖的話,那麽其並發性會大打折扣,而且也可能導致你的程序出錯。 而導致行鎖變為

『淺入淺出』MySQLInnoDB

分享圖片 忽略 位置 現在 連續 適合 如果 聚集 快速 作為一名開發人員,在日常的工作中會難以避免地接觸到數據庫,無論是基於文件的 sqlite 還是工程上使用非常廣泛的 MySQL、PostgreSQL,但是一直以來也沒有對數據庫有一個非常清晰並且成體系的認知,所以最近

mysqlInnoDB 數據庫引擎TableSpace Exists 問題

拷貝 exists 一個 schema error 間隔 完全 table orm Mysql數據庫報錯: ERROR 1813 (HY000): Tablespace ‘`coll`.`t1`‘ exists. 原因:在使用InnoDB引擎的數據庫中,所有已經存在的表都使

Mysql-my-innodb-heavy-4G.cnf配置文件註解

mysqlMysql-同Nginx等一樣具備多實例的特點,簡單的講就是在一臺服務器上同時開啟多個不同的服務端口(3306,3307)同時運行多個Mysql服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。這些Mysql多實例公用一套Mysql安裝程序,使用不同的my.conf配置文件、

MySQLInnoDB的幻讀問題

sha 存儲 action sca sele 就是 沒有 默認 err MySQL InnoDB事務的隔離級別有四級,默認是“可重復讀”(REPEATABLE READ)。 未提交讀(READ UNCOMMITTED)。另一個事務修改了數據,但尚未提交,而本事務中的SEL

mysqlInnoDB行鎖的一點反思

行鎖 解決 統計 發現 今天 int 運營 innodb 應用場景 剛參加工作時,遇到的mysql死鎖的問題。具體情況如下: 網頁有個統計訪問次數功能,然後這個次數num是int類型,網頁每次被訪問一次就增1,然後運營在跑批量任務的時候,造成數據量這個字段死鎖

zbb20180927 MySQL MyISAM InnoDB區別

auto 外鍵 views mysql div 系統 dsm 處理 dex MySQL MyISAM InnoDB區別 InnoDB:支持事務處理等不加鎖讀取支持外鍵支持行鎖不支持FULLTEXT類型的索引不保存表的具體行數,掃描表來計算有多少行DE

MySqlInnoDB存儲引擎--索引

有序 類比 where 如果 sql mysq 獲取數據 mysql 物理地址 索引分類: 1、聚集索引:索引順序與物理順序一致。   MySql 的 InnoDB 中,主鍵索引就是聚集索引。好處是,進行搜索的時候,因為索引和物理順序一致,所以找數據的時候更快。 2、非聚集

MySQLInnodb恢復的學習筆記

idle oba not run nag recv cts 相對 nor 長度 MySQL · 引擎特性 · InnoDB 崩潰恢復過程 enum { SRV_FORCE_IGNORE_CORRUPT = 1, /*!< let the server r

MySQLinnodb引擎是如何實現MVCC的

innodb會為每一行新增兩個欄位,分別表示該行建立的版本和刪除的版本,填入的是事務的版本號,這個版本號隨著事務的建立不斷遞增。在repeated read的隔離級別(事務的隔離級別請看這篇文章)下,具體各種資料庫操作的實現: select:滿足以下兩個條件innodb會返回該行資料:

MySQLInnoDB鎖機制

轉自 https://www.cnblogs.com/aipiaoborensheng/p/5767459.htmlI nnoDB與MyISAM的最大不同有兩點:一是支援事務(TRANSACTION);二是採用了行級鎖。行級鎖與表級鎖本來就有許多不同之處,另外,事務的引入也帶來了一些新問題。下面

mysqlinnodb鎖的應用

--> mysql行鎖  表的搜尋引擎為innodb,支援事務,採用的是行鎖。 ---> 首先將mysql 的自動提交設定為0 set autocommit = 0;  寫輸入完成sql之後需要執行的命令是 commit;命令來執行事務的提交。

解決mysql使用innodb引擎ibdata1,過大

筆者購買的阿里雲主機,因業務需要使用事務,經常業務頻繁,導致資料庫檔案猛漲到100G左右,而實際匯出的資料只有5G,筆者使用的資料庫是5.7版本以下,innodb_file_per_table使用預設配置,即是關閉的,innodb的表和索引都儲存在一起.導致檔案很大. 1.需要在/etc/my.

MySQLInnoDB 和 MyISAM 小結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mysqlInnoDB與MyISAM的區別

兩者的區別: 1. InnoDB支援事務,MyISAM不支援,對於InnoDB每一條SQL語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個事務; 2. InnoDB支援外來鍵,而MyISAM不支援。對一個包含外來鍵的InnoDB錶轉為MYI

MySQLInnoDB相關檔案

本章將會分析構成MySQL資料庫和InnoDB儲存引擎的各種型別檔案,這些檔案有如下幾種: 引數檔案:主要是儲存了MySQL資料庫相關引數的檔案,比如指定存放資料庫路徑、初始化引數、記憶體大小等的配置。 日誌檔案:包括錯誤日誌檔案、二進位制日誌檔案、慢查詢日誌檔案、查詢日誌檔案等。 sock

1-2 【包子mysql系列】, 對mysqlinnoDB加鎖分析

innoDB的事務,是基於鎖來實現的,用到事務不自然就會用到鎖,而如果對鎖理解的不通透,很容易造成線上問題。 資料庫加鎖的分析,和事務的引擎,隔離級別,索引,主鍵索引都有關係, 如果去考慮引擎和各種隔離級別的話,就會很複雜了,所以下面都是基於innoDB和RR的隔離級別進行分析:   表結構

mysqlinnodb和MyISAM的儲存

轉自:https://www.cnblogs.com/xiaoxi/p/6868087.html 一、零鋪墊     在介紹B樹之前,先來看另一棵神奇的樹——二叉排序樹(Binary Sort Tree),首先它是一棵樹,“二叉”這個描述已經很明顯了,就是樹上的