昨天下午,客戶發截圖來講系統異常,哥的第一時間就是去看tomcat日誌,直接說客戶表不存在,我很好奇,這個明明有,否則早都報錯了。因而打開數據庫看看,頓時傻眼了!整個數據庫都沒了,確定是被攻擊了,最搞笑的是多了一個數據庫,名字直接是qq12344,相似這樣,好吧,意思就是要錢給你恢復。而後哥加了這個qq,可是並不打算給錢,只是好奇隨便加下;mysql
而後同事給我發了一個博格地址(http://blog.csdn.net/rogerzhanglijie/article/details/37902611 ),看了下是用binlog,這方面我還沒接觸過,因而先看看文章;看完以後大概知道是什麼狀況了,因而準備開始小試牛刀。sql
首先我查看下是否是開啓binlog了,打開mysql配置:vim /etc/my.cnf; 萬幸!開啓了。數據庫
而後找到了日誌存放的目錄,因爲哥是一個小白,不知道日誌目錄,因而用最笨的方法,vim
find -/ '*mysql-bin*';tomcat
因而搜索出了一大堆文件,再找到mysql-bin.00001結尾的文件,由於binlog日誌文件是這個格式。。因而乎就找到日誌了。。編碼
如今找到日誌以後,開始按前面提到的博客地址教程,使用mysqlbinlog生產.txt文件;先cd 到mysql的bin目錄下,而後執行:spa
mysqlbinlog /data/mysql/mysql-bin.000003 >/data/mysql/mysql-bin.000003.txt;.net
這時候會提示編碼問題,沒辦法,繼續百度,而後加上 --no-defaults 參數就ok了;生成以後準備恢復;因而執行:日誌
mysqlbinlog --no-defaults --start-position="4" --stop-position="791490" /data/mysql/mysql-bin.000003 /data/mysql/mysql-bin.000003.txt | mysql -uroot -p;blog
結果又出錯了,說數據庫不存在,好吧,確實不存在,因而新建了一個名字同樣的數據庫;繼續執行,仍是報錯,說mysql.zpxstd表已存在,這個好像是mysql自帶的表,在日誌裏有建立這個表,而後如今已經有這個表了。難道把這個表刪除了?但是這樣的狀況不少,還有其餘表;由於這樣的錯誤,致使後面的binlog都執行不了。。怎麼辦?而後同事說用source,能夠忽略錯誤繼續執行。因而,命令變成這樣:
source /data/mysql/mysql-bin.000003.txt;
搞定!而後查看下數據庫,悲催,數據庫又沒了!原來日誌裏有drop命令,是那個黑客留下的,忘記處理drop了,處理以後再執行一次。。ok了!
注意:1.最好先在本地數據庫進行操做;
2.改好以後記得把密碼改複雜點
3.定時備份!
4.開啓快照
5.最好不要用root遠程登陸,能夠建個只讀用戶名進行遠程登陸
在哥進行恢復的時候,那個黑客的qq經過了好友,而後他直接問想恢復嗎?我說你留着把(原本就不打算買,咱們項目上線才1周,沒什麼數據),而後他很拽的把哥拉黑了;