RM新时代国际平台

  • <div id="r605l"></div>
      1. <th id="r605l"></th>
      2. mysql誤刪數據庫表的frm文件和ibd文件?試試這樣恢復

        之所以做這個實驗,也是有個朋友誤刪了某張表的frm和ibd文件,然后要導入數據的時候一直提示無法重新創(chuàng)建這張表,這時候應該怎么解決呢?我們用一個實驗來看看。。

        以下ERROR 29 (HY000): 

        測試在t表表結構不存在的時候插入數據,發(fā)現可以插入成功

        重啟之前得在其他數據庫新建t表結構,然后復制frm文件到原數據庫即可

        因為myisam不需要記錄信息到數據字典,所以drop后重建就行了

        此時t2表結構和數據已經恢復

        可以發(fā)現修復不成功ti2m1g.jpg

        考慮到在使用innoDB引擎的數據庫中,其實際數據不是存放在數據庫目錄下的,而是放在一個叫ibdata1的文件內(默認配置時),其目錄下只是放置了數據庫的表及表結構相關的信息。這里在其他庫上建立t表及數據,然后將這個表復制到test庫下

        拷貝后發(fā)現還是沒有恢復成功

        升級后還是沒有恢復成功

        因為共享表空間記錄了信息

        配置文件的一個參數:innodb_force_recovery

        innodb_force_recovery 會影響整個InnoDB存儲引擎的恢復狀況。默認為0,表示當需要恢復時執(zhí)行所有的

        innodb_force_recovery可以設置為1-6,大的數字包含前面所有數字的影響。當設置參數值大于0后,可以對表進行

        select,create,drop操作,但insert,update或者delete這類操作是不允許的。

        1、在mysql庫創(chuàng)建t表及數據

        2、停止數據庫

        3、復制frm和ibd文件

        4、修改參數

        5、兩次啟動數據庫

        啟動mysql,再關閉mysql 把配置innodb_force_recovery = 6給刪除了,然后啟動mysql

        6、drop 表后重建

        提示ERROR 1813 (HY000): Tablespace '`test`.`t`' exists或ERROR 1813 (HY000): Unknown error 1813都是表空間問題

        此時只需要刪除對應的.ibd文件即可或者alter table t discard tablespace;來刪除

        1、誤刪數據文件時不要忙著重啟數據庫,先查看表是否存在,做一下備份

        2、定期備份是很重要的

        3、以上innodb表實際上只恢復了表結構,表數據并沒有恢復,可以考慮通過mysqlbinlog進行回退

        覺得有用的朋友多幫忙轉發(fā)哦!后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~


        下一篇:mysql連接報“Communications link failure”錯誤
        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平台入口