誤刪mysql伺服器 誤刪除了伺服器資料,怎麼辦?

2021-10-19 22:06:20 字數 1627 閱讀 5472

前言每當我們在生產環境伺服器上執行rm命令時,總是提心吊膽的,因為一不小心執行了誤刪,然後就要準備跑路了,畢竟人不是機器,更何況機器也有bug,呵呵。

那麼如果真的刪除了不該刪除的檔案,比如資料庫、日誌或執行檔案,咋辦呢?欲知後事如何,請仔細看完本篇部落格。

模擬場景

1、刪除

誤刪除伺服器目錄/root/selenium/spider下的mysql.data.dll檔案:

> rm -f /root/selenium/spider/mysql.data.dll

> ll /root/selenium/spider/mysql.data.dll

ls: cannot access /root/selenium/spider/mysql.data.dll: no such file or directory

2、恢復

(1)、使用lsof命令檢視當前是否有程序開啟/root/selenium/spider/mysql.data.dll檔案:

從上面可以看出,當前檔案狀態為已刪除(deleted)。

(2)、檢視是否存在恢復資料:

/proc/13067/fd:程序操作的檔案描述符目錄。

86:檔案描述符。

> cat /proc/13067/fd/86

(3)、使用i/o重定向恢復檔案

> cat /proc/23778/fd/86 > /root/selenium/spider/mysql.data.dll

> ls -l /root/selenium/spider/mysql.data.dll

-rw-r--r-- 1 root root 702464 feb 10 12:03 /root/selenium/spider/mysql.data.dll

重新執行程式:

說明恢復的檔案沒有問題。

刨根問底

通過前面的模擬場景演示了恢復檔案的整個過程,那麼原理是什麼,在什麼情況下,檔案才是可恢復的。

在linux系統中,每個執行中的程式都有乙個宿主程序彼此隔離,以/proc/程序號來體現(linux本質上就是乙個檔案系統),比如:ls -l /proc/13067檢視程序pid為13067的程序資訊;當程式執行時,作業系統會專門開闢一塊記憶體區域,提供給當前程序使用,對於依賴的檔案,作業系統會發放乙個檔案描述符,以便讀寫檔案,當我們執行 rm -f刪除檔案時,其實只是刪除了檔案的目錄索引節點,對於檔案系統不可見,但是對於開啟它的程序依然可見,即仍然可以使用先前發放的檔案描述符讀寫檔案,正是利用這樣的原理,所以我們可以使用i/o重定向的方式來恢復檔案。

總結如果不小心誤刪了檔案,不要著急,首先使用 lsof檢視開啟該檔案的程序,然後再使用 cat /proc/程序號/fd/檔案描述符檢視恢復資料,最後使用i/o重定向的方式來恢復檔案。

mysql誤刪 mysql資料庫誤刪除後怎麼辦?

在日常運維工作中,對於資料庫的備份是至關重要的!資料庫對於 的重要性使得我們對 mysql 資料庫的管理不容有失!然而是人總難免會犯錯誤,說不定哪天大腦短路了,誤操作把資料庫給刪除了,怎麼辦?下面,就 mysql 資料庫誤刪除後的恢復方案進行說明。一 工作場景 mysql資料庫每晚12 00自動完全...

mysql 誤刪除資料恢復

第一步 保證mysql已經開啟binlog 值必須為on 開啟binlog方法 第二步 檢視binlog存放日誌檔案目錄 第三步 檢視binlog row image 值必須為full 修改 binlog row image 第四步 檢視binlog模式 必須為行級模式row 修改模式方法 第五步 ...

伺服器誤刪除虛擬機器資料恢復成功

需要進行資料恢復的伺服器採用linux作業系統 ext4檔案系統。由於實習生操作失誤將伺服器上的kvm虛擬機器刪除了3臺。該伺服器上每台虛擬機器包含乙個qcow2格式的磁碟檔案,和乙個大小約為1.2t的raw格式的磁碟檔案,主要需恢復raw格式的磁碟檔案。1 分析伺服器中的ext4檔案系統,將被刪除...