RM新时代国际平台

  • <div id="r605l"></div>
      1. <th id="r605l"></th>
      2. MySQL數(shù)據(jù)表InnoDB引擎表誤刪恢復(innodb

        這世界上有后悔藥 -www.houhuiyao.cc 后悔藥MySQL數(shù)據(jù)恢復 站長語

        MySQL

        MySQL支持多種存儲引擎,使用較多的有Innodb引擎和MyISAM引擎。兩種引擎有很大區(qū)別,那么一旦出現(xiàn)數(shù)據(jù)表誤刪,就要針對具體引擎進行分析。接下來,研究下數(shù)據(jù)表InnoDB表誤刪恢復的一些方法。

        研究如何恢復Innodb引擎前,先簡要的介紹下InnoDB,詳細介紹看MySQL數(shù)據(jù)庫InnoDB數(shù)據(jù)存儲引擎詳細介紹。

        InnoDB,是MySQL的數(shù)據(jù)庫引擎之一,為MySQL AB發(fā)布binary的標準之一。InnoDB由Innobase Oy公司所開發(fā),2006年五月時由甲骨文公司并購。與傳統(tǒng)的ISAM與MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事務(Transaction)功能,類似于PostgreSQL。

        目前InnoDB采用雙軌制授權,一是GPL授權,另一是專有軟件授權。

        中文名 innodb         外文名 innodb

        類 型 mysql數(shù)據(jù)庫引擎     開發(fā)公司 Innobase Oy公司

        特 色 支持了ACID兼容的事務  授 權 GPL授權,專有軟件授權

        (MySQL及InnoDB目前均被Oracle公司收購)

        在技術上,InnoDB 是一套放在 MySQL后臺的完整數(shù)據(jù)庫系統(tǒng),InnoDB 在主內(nèi)存中建立其專用的緩沖池用于高速緩沖數(shù)據(jù)和索引。

        InnoDB 把數(shù)據(jù)和索引存放在表空間里,可能包含多個文件,這與其它的不一樣,舉例來說,在 MyISAM 中,表被存放在單獨的文件中。InnoDB 表的大小只受限于操作系統(tǒng)的文件大小,可也可以每個表使用各自獨立的表空間,只需要啟用選項 innodb_file_per_table

        這里我們討論的是使用獨立表空間(innodb_file_per_table=1)情況下的誤刪。(以下操作在測試環(huán)境進行,尤其rm -f命令需要慎重)

        mysql> show variables like ‘innodb_file_per_table’;

        +———————–+——-+

        | Variable_name | Value |

        +———————–+——-+

        | innodb_file_per_table | ON |

        +———————–+——-+

        1 row in set (0.03 sec)

        建立測試InnoDB表和測試數(shù)據(jù)

        mysql> show create table aG

        *************************** 1. row ***************************

        Table: a

        Create Table: CREATE TABLE `a` (

        `id` int(11) NOT NULL,

        `name` varchar(20) DEFAULT NULL,

        PRIMARY KEY (`id`)

        ) ENGINE=InnoDB DEFAULT CHARSET=latin1

        1 row in set (0.09 sec)

        mysql> select * from a;

        +—-+——+

        | id | name |

        +—-+——+

        | 11 | d |

        | 22 | d |

        | 33 | d |

        +—-+——+

        3 rows in set (0.07 sec)

        可以看到我們的測試表是InnoDB表存儲引擎,插入了三條數(shù)據(jù)。

        三條數(shù)據(jù)存儲在MySQL里,在磁盤上以文件形式保存,效果如下:

        此時表誤刪,類似于使用 rm -f a.*

        那么這種情況下對InnoDB表數(shù)據(jù)的恢復,如果有備份,則直接使用備份進行恢復;如果開啟了binlog參考mysql恢復誤刪的數(shù)據(jù)。如果既沒有備份也沒有開啟binlog或者binlog也不全,那要完整恢復這里誤刪的InnoDB表,實際上就是對Linux下刪除文件rm -f * 進行恢復。

        #使用命令進行直接恢復

        #先查看數(shù)據(jù)所在分區(qū)

        [root@www ~]# df -h /usr

        Filesystem Size Used Avail Use% Mounted on

        /dev/sda2 18G 7.9G 8.8G 48% /

        其中 /usr是MySQL數(shù)據(jù)所在目錄

        #使用工具進行恢復

        cd /tmp/

        extundelete –restore-all /dev/sda2

        #則將在當前目錄下生成RECOVERED_FILES目錄,存放全部恢復出來的物理文件。找到a.frm a.ibd后導入MySQL數(shù)據(jù)庫即可恢復InnoDB誤刪除的表


        下一篇:ora數(shù)據(jù)庫故障修復
        RM新时代国际平台
      3. <div id="r605l"></div>
          1. <th id="r605l"></th>
          2. <div id="r605l"></div>
              1. <th id="r605l"></th>
              2. 新时代RM|国际平台 新时代软件下载 RM新时代官网网址 rm新时代是正规平台 新时代rm平台入口