今天研發報測試環境數據庫空間不夠,發現被mysql binlog佔滿了,於是對mysql的binlog進行刪除,由於操作太快把當前正在用的binlog給刪除了,刪除後,立即保護現場,沒有對數據庫做任何操作,於是開始了恢復。
首先通過
lsof |grep delete查看被刪除,但還未釋放的文件,通過這裏可以看到進程的id和被刪除的文件
mysqld 2124 mysql 5u REG 253,0 0 917509 /tmp/ibn6E1Uu (deleted)
mysqld 2124 mysql 6u REG 253,0 0 917510 /tmp/ib1ckty4 (deleted)
mysqld 2124 mysql 7u REG 253,0 0 917511 /tmp/ibwDAVbE (deleted)
mysqld 2124 mysql 8u REG 253,0 0 917512 /tmp/ibACGrMN (deleted)
mysqld 2124 mysql 33u REG 253,0 0 917513 /tmp/ibGmQgQn (deleted)
mysqld 2124 mysql 37w REG 253,0 20668242 263015
/var/lib/mysql/mysql-bin.000042 (deleted)
到proc目錄進程裏面查找該文件
ll /proc/2124/fd|grep 0042
[root@etl mysql]# ll /proc/2124/fd |grep 42
l-wx------. 1 root root 64 8月 25 13:35 37 -> /var/lib/mysql/mysql-bin.000042 (deleted)
lrwx------. 1 root root 64 8月 25 13:35 42 -> /var/lib/mysql/mysql/db.MYD
將文件拷貝回去
cp /proc/2124/fd/37 /var/lib/mysql/mysql-bin.000042
更改文件權限
chown -R mysql:mysql /var/lib/mysql/mysql-bin.000042
重啓數據庫
[root@etl mysql]# /etc/init.d/mysql restart
Shutting down MySQL.... SUCCESS!
Starting MySQL.. SUCCESS!
在做刪除操作時,一定要務必小心