MYSQL數據恢復
當mysql的數據被誤操作刪除后
大致有如下幾種恢復思路
一.直接還原
如果數據庫每天都有用mysqldump去備份,那么當數據丟失之后,只需要把sql直接導入數據庫即可。
mysql -uroot -ptqw961110 < backup.sql
二.通過bin-log還原
但是遺憾的是,有時候數據庫的數據還沒來得及備份就被誤操作刪掉了。那么這時候bin-log就起到很好的作用了。
bin-log在主從復制上發揮着很重要的作用,主要是記錄主庫最新的各種操作,並告訴從庫,讓從庫執行同樣的操作,從而實現同步復制。
因此,當數據庫數據被誤刪了,我們可以將bin-log里面的操作給數據庫再執行一次。
在執行還原操作前,要先停止數據庫,避免有新的數據寫入。
假如不確定丟失的數據是在什么時段丟失的,建議進行一次全備操作。
mysqlbinlog --no-defaults -d wordpress mysql-bin.000014 > bin.sql
把所有的bin-log匯總到bin.sql
然后把drop語句剔除掉(又或者可以針對誤操作的語句進行針對性的搜索,搜索出誤操作語句然后剔除掉)
cat bin.sql | grep -i -v "drop" > bin.sql
最后把bin-sql導入mysql即可。(操作前注意先把現有的數據進行備份)
三.如果還原時主庫還有數據需要寫入不能停庫
方法步驟與第二種方法相似,也需要把bin-log變成sql,剔除drop語句。
然后把bin-sql導入到從庫里面。
帶主庫寫入數據完畢
刷新主庫bin-log
將新的bin-log解析成sql導入到從庫中。
然后將服務切換到從庫,讓從庫提供業務。
但是,無論最后能不能恢復,誤操作導致數據丟失的后果還是很嚴重的。小伙伴們平時一定要注意數據庫的操作權限管理。