MYSQL rm rf mysql 之資料恢復

2021-10-05 06:51:36 字數 2348 閱讀 4912

維持現場狀態,不能重啟機子,也不行關閉執行中的mysql的程序,如果關閉就無法對資料進行恢復了;

這是因為:檔案實際上是乙個指向inode的鏈結, inode鏈結包含了檔案的所有屬性, 比如許可權和所有者, 資料塊位址(檔案儲存在磁碟的這些資料塊中). 當你刪除(rm)乙個檔案, 實際刪除了指向inode的鏈結, 並沒有刪除inode的內容. 程序可能還在使用. 只有當inode的所有鏈結完全移去, 然後這些資料塊將可以寫入新的資料.

·    proc檔案系統可以協助我們恢復資料. 每乙個系統上的程序在/proc都有乙個目錄和自己的名字, 裡面包含了乙個fd(檔案描述符)子目錄(程序需要開啟檔案的所有鏈結). 如果從檔案系統中刪除乙個檔案, 此處還有乙個inode的引用:

(參考當程序開啟了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序並不知道檔案已經被刪除,它仍然可以向開啟該檔案時提供給它的檔案描述符進行讀取和寫入。除了該程序之外,這個檔案是不可見的,因為已經刪除了其相應的目錄索引節點。

在/proc 目錄下,其中包含了反映核心和程序樹的各種檔案。/proc目錄掛載的是在記憶體中所對映的一塊區域,所以這些檔案和目錄並不存在於磁碟中,因此當我們對這些檔案進行讀取和寫入時,實際上是在從記憶體中獲取相關資訊。

大多數與 lsof 相關的資訊都儲存於以程序的 pid 命名的目錄中,即 /proc/1234 中包含的是 pid 為 1234 的程序的資訊。每個程序目錄中存在著各種檔案,它們可以使得應用程式簡單地了解程序的記憶體空間、檔案描述符列表、指向磁碟上的檔案的符號鏈結和其他系統資訊。

lsof 程式使用該資訊和其他關於核心內部狀態的資訊來產生其輸出。所以lsof 可以顯示程序的檔案描述符和相關的檔名等資訊。也就是我們通過訪問程序的檔案描述符可以找到該檔案的相關資訊。

例子1、

程序在執行中,接下來我就把/var/log/messages這個檔案刪掉

shell> rm /var/log/messages

刪掉之後,我再來看看這個程序的變化

shell> lsof |grep /var/log/messages

rsyslogd   1737      root    1w      reg       8,2   5716123     652638 /var/log/messages (deleted)

大家看到有變化了吧, 對比兩個之後發現多了(deleted)。要找到這個檔案在哪還要看看這個

在理解了方法1的原理之後,其實最終目的是獲取pid,因此可以轉換思路。

因為知道被刪除的是mysql的所有檔案,所以可以直接使用ps -aux|grep mysql 檢視還在使用中的程序id

(參考)

這種方式只能對檔案系統為ext3 或者 ext4 型別的進行恢復,不然無法進行恢復

使用命令進入到以程序的pid命名的目錄中

cd /proc/(第二步獲取的pid)/fd

此時能看到被rm 刪除掉的檔案狀態為deleted

找出需要恢復的檔案編號

例如截圖中的2

cat 2 >/recover/pts/1 該語句的作用是把還在記憶體中檔案重新寫到某個地方

當我將/mysql/data/下的資料庫檔案全部備份出來的時候,深深的松了一口氣,此時我們離資料完全恢復還有40%的工作要做。

從伺服器上把備份好的.ibd檔案匯出至本地,並在自己的測試環境中進行mysql資料的恢復

1、在測試環境中建立和線上一樣的資料庫、表結構

2、刪除/mysql/data/資料庫/相關表的.ibd檔案

3、複製備份的.ibd至該資料庫資料夾下

cp /recover/* /mysql/data//

若有mysql使用的使用者許可權的話 需要賦權

chown -r . /mysql/data/

4、進入mysql中,進行資料匯入

此時需要注意的是,每一條語句只能執行一次,即執行一句就要退出mysql,再次進入mysql執行第二句,以此類推

資料無價,三思而後行!!多乙份知識的傳遞  少乙個跑路的程式設計師。。。。。

mysql rm rf mysql解除安裝與安裝

yum方式 yum remove mysql mysql server mysql libs compat mysql51 rm rf var lib mysql rm etc my.cnf 檢視是否還有mysql軟體 rpm qa grep mysql 如果存在的話,繼續刪除即可。yum inst...

博學之,審問之,慎思之,明辨之,篤行之

禮記 中庸 十九章有云 博學之,審問之,慎思之,明辨之,篤行之。這說的是為學的幾個層次,或者說是幾個遞進的階段。博學之 意謂為學首先要廣泛的獵取,培養充沛而旺盛的好奇心。好奇心喪失了,為學的慾望隨之而消亡,博學遂為不可能之事。博 還意味著博大和寬容。惟有博大和寬容,才能相容幷包,使為學具有世界眼光和...

接觸之,熟悉之,打破之

接觸之,熟悉之,打破之 拿破崙小時候就是孩子王,不管同夥伴們玩什麼遊戲,它總是贏家。同時,它更善於改變遊戲規則,以便能夠發揮他自己的優勢。如果能夠成為遊戲規則的左右者,那麼,在當今商戰中必定是最大的贏家。我們處在乙個有著各種各樣遊戲規則的大環境中,每時每刻都要面對不同的遊戲規則,轉換不同的角色,讓自...