MySQL刪除idb檔案引發的思考

2021-09-20 23:15:23 字數 805 閱讀 2877

最近發現乙個好玩的東西,就是通過rm刪除mysql乙個表的idb檔案,發現我查這張表的時候資料還是可以查的,好奇怪怎麼可以這樣????

1

發現幾個概念:檔案系統與硬碟儲存、inode節點、硬碟結構、linux如何訪問檔案、lsof

通過查詢資料發現:檔案物理儲存結構就是/home/stu01 /home/stu02 首先硬碟建立的時候會建立兩個l東西乙個儲存真正的資料、乙個儲存乙個inode表;當我們用cat檢視乙個檔案的時候、kernel會讀取物理與inode表對應的該條資訊,然後告訴kernel根據inode裡的資訊讀取硬碟上的真正資料。

從網上找了乙個說明硬碟的東東:檔案系統將硬碟劃分為塊,編號從0開始到整個磁碟的最大塊數。

1

2

3

0塊給引導塊

1塊成為專用塊

從第二塊開始是i節點表,表的塊數是可變的i節點之後是空閒的儲存塊(真正存放資料的塊)

linux某個地方會存放乙個表(據說這個表又分成了13塊號,到了11塊號後每乙個塊號又可以產生256塊號),告訴檔案系統如何將物理結構轉換成邏輯結果,這個邏輯結果就是i節點,i節點是乙個64位元組長的表,包含了有關乙個檔案的資訊,包括檔案大小,檔案所有者,檔案訪問方式,型別等。

所以硬碟劃分的時候一部分給了block(真正存放檔案資料的地方),還有一部分就是存放inode的東西,一般情況下inode的數量為硬碟大小/乙個容量即(block)。

du與df區別:

參考:

mysql 用idb檔案恢復資料

最近公司mysql資料庫壞掉了 最要命的是ibdata1檔案出現了損壞 導致資料庫啟動失敗 尷尬了於是默默的儲存了 date目錄下的資料結構 然後 google 找辦法是否可以利用data目錄下的資料恢復表結構 最後成功恢復 記錄如下 我的mysql版本 mysql 5.6.35 winx64 免安...

Mysql 表 idb檔案損壞,無法啟動資料庫

今天win10修復硬碟後,mysql無法啟動。mysql 服務正在啟動 mysql 服務無法啟動。系統出錯。發生系統錯誤 1067。程序意外終止。在workbench 上試圖開啟mysql時,報如下錯誤 後來在網上找到答案,在存放資料庫資料夾的那裡,修改my.ini檔案,可以開啟表損壞的資料庫 在m...

刪除mysql備份檔案

前言 前篇介紹了mysql的備份方法,但備份不是越多越好,如果磁碟空間不夠用,我需要保留近乙個周的備份就可以了,那就需要刪除備份指令碼了,特別注意刪除操作比較危險,變數傳參要進行二次確認。bin bash delte mysql back of 7 days ago author jzd versi...