今天早晨,打開數據庫一看,保存的數據全不見了,只剩下一個叫PLEASE_READ_ME_VVV的數據庫。html
裏面寫着mysql
To recover your lost Database and avoid leaking it: Send us 0.045 Bitcoin (BTC) to our Bitcoin address 1McksxpysJGSG9a9zHvan5f8Y1nfpDbVYF and contact us by Email with your Server IP or Domain name and a Proof of Payment. Your Database is downloaded and backed up on our servers. Backups that we have right now: *. Any email without your server IP Address or Domain Name and a Proof of Payment together will be ignored. If we dont receive your payment in the next 10 Days, we will make your database public or use them otherwise.sql
翻譯過來就是:shell
要恢復丟失的數據庫並避免泄漏:請將0.045比特幣(BTC)發送到咱們的比特幣地址1Mcksxpysjgsg9a9zhvan5f8y1nfpdbvyf,並經過電子郵件與您的服務器IP或域名和付款證實聯繫。您的數據庫已下載並備份到咱們的服務器上。咱們如今擁有的備份:*。任何沒有您的服務器IP地址或域名和付款證實一塊兒的電子郵件都將被忽略。若是咱們在將來10天內沒有收到您的付款,咱們將公開您的數據庫或使用它們。數據庫
被勒索了。bash
第一步,打開谷歌尋找解決辦法。看到這篇博文,遇到了一樣的問題。服務器
數據庫被人勒索比特幣慘遭刪庫 www.printf520.com/single.html…工具
如下內容,針對具體狀況進行進一步處理。ui
第二步,查看自已經是否打開了mysql的binlogspa
SHOW VARIABLES LIKE 'log_bin%';
複製代碼
+---------------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------------+
| log_bin | ON |
| log_bin_basename | /usr/local/var/mysql/mysql-bin |
| log_bin_index | /usr/local/var/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+---------------------------------------+
6 rows in set (0.00 sec)
複製代碼
log_bin是ON說明mysql是開啓了binlog的,找到了binlog的位置,在
/usr/local/var/mysql/mysql-bin
因而
cd /usr/local/var/mysql
複製代碼
其中的mysql-bin.00000*就是binlog文件。
binlog是Mysql sever層維護的一種二進制日誌,與innodb引擎中的redo/undo log是徹底不一樣的日誌;其主要是用來記錄對mysql數據更新或潛在發生更新的SQL語句,並以"事務"的形式保存在磁盤中;
做用主要有:
而後咱們打開最新的binlog文件,在文件的最後幾行,你會發現使人窒息的操做
好了,這下我明白了,人家直接drop了。
第三步:使用binlog恢復文件
原理就是binlog保存了你全部的數據庫操做,至關於你從新執行了在執行drop以前全部的增刪改查。
那麼咱們就須要找到發生刪除的時間點。如上圖所示,# 190622 9:32:19
因此使用mysqlbinlog恢復數據庫
在/usr/local/var/mysql 目錄下執行
mysqlbinlog --start-datetime='2019-01-01 00:00:00' --stop-datetime='2019-06-24 10:30:00' mysql-bin.000001 | mysql -h 123.45.678.9 -u root -p -P 3306
複製代碼
其中
start-datetime=爲你想恢復的起始位置,通常爲剛建立數據庫的時候
stop-datetime=爲被刪庫以前的時間,只要是被刪庫以前就能夠
mysql-bin.000001爲要恢復的binlog文件,將全部相關的mysql-bin都寫上,以逗號隔開
mysql -h 123.45.678.9 -u root -p -P 3306 爲你的遠程數據庫地址
123.45.678.9爲遠程ip
root爲用戶名
3306爲端口號
第四步:恢復完成
若是第三步出錯,通常都在於沒有選擇合適的起始和終止時間,這個須要本身去尋找
恢復過程視數據庫大小時間長短不定
參考資料: