早上起來被告知昨晚誤刪除了3個mysql的文件,只能恢復了
這是刪除前的文件信息:
首先lsof查看進程:
這裏PID都是一樣的,下面進入proc裏ls -l查看:
# cd /proc/8784/fd/
這裏可以看到ibdata1刪除的信息了
接着直接cp複製
#cp 4 /tmp/ibdata1.bak
其餘的2個同理恢復,下面是恢復後的文件:
+++++++++++++++++++++++++++++++++++++++++++++
雖然恢復了,但是事情絕對沒有這麼簡單!!!
因爲,在innodb的buffer pool中,有許多dirty page(就是內存中的數據已經被修改,但是沒有寫回文件中),如果直接把文件複製回去,輕則數據丟失,重則ibdata1文件損壞。
我們必須保證所有buffer pool中的數據修改都保存到了硬盤文件上面,然後在恢復文件。