您好,登錄后才能下訂單哦!
下文主要給大家帶來使用lsof回恢復被誤刪的mysql數據庫文件,希望這些內容能夠帶給大家實際用處,這也是我編輯使用lsof回恢復被誤刪的mysql數據庫文件這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
誤刪數據庫文件后,請不要重啟mysqld!
rm /data/mysql/test/test2.ibd lsof | grep test2.ibd mysqld 93384 93483 mysql 21uW REG 8,3 98304 33578386 /data/mysql/test/test2.ibd (deleted)
PID為93384 文件標識符為21
cat /proc/93384/fd/21 > /data/mysql/test/test2.ibd
重啟數據庫 提示:
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
原因: ll /data/mysql/test/test2.ibd 的用戶與用戶組為root
解決:chown mysql:mysql /data/mysql/test/test2.ibd
重啟數據庫成功
原理:
當進程打開了某個文件時,只要該進程保持打開該文件,即使將其刪除,它依然存在于磁盤中。這意味著,進程并不知道文件已經被刪除,它仍然可以向打開該文件時提供給它的文件描述符進行讀取和寫入。除了該進程之外,這個文件是不可見的,因為已經刪除了其相應的目錄索引節點。
在/proc 目錄下,其中包含了反映內核和進程樹的各種文件。/proc目錄掛載的是在內存中所映射的一塊區域,所以這些文件和目錄并不存在于磁盤中,因此當我們對這些文件進行讀取和寫入時,實際上是在從內存中獲取相關信息。大多數與 lsof 相關的信息都存儲于以進程的 PID 命名的目錄中,即 /proc/1234 中包含的是 PID 為 1234 的進程的信息。每個進程目錄中存在著各種文件,它們可以使得應用程序簡單地了解進程的內存空間、文件描述符列表、指向磁盤上的文件的符號鏈接和其他系統信息。lsof 程序使用該信息和其他關于內核內部狀態的信息來產生其輸出。所以lsof 可以顯示進程的文件描述符和相關的文件名等信息。也就是我們通過訪問進程的文件描述符可以找到該文件的相關信息。
當系統中的某個文件被意外地刪除了,只要這個時候系統中還有進程正在訪問該文件,那么我們就可以通過lsof從/proc目錄下恢復該文件的內容。
對于以上關于使用lsof回恢復被誤刪的mysql數據庫文件,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。