前言
今天同事勿洗掉了一個測驗環境表,因為剛好在跑重要的資料,重新跑又比較麻煩,所以嘗試看能不能通過恢復資料的方式進行資料恢復,如果你也是重要資料一定要切記“不要慌,慌也沒用”,
百度過一些例子,哪些例子比較適合表剛剛創建后被洗掉,就能完全恢復,本篇文章適合那種創建很長時間,表在被洗掉的,
開始操作
第一步:先連接資料庫
mysql -uroot
第二步:在Mysql執行,看有沒有開發日志備份
show variables like 'log_bin'
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
這里回傳ON表示開啟了,如果是OFF表示關閉,如果是OFF這篇文章可以不用看了,對你沒有任何幫助
第三步:繼續在MySQL執行,查看日志備份路徑
show variables like '%datadir%'
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /usr/local/mysql/data/ |
+---------------+------------------------+
第四步:去/usr/local/mysql/data/路徑查看串列可以使用ll命令

這里可以看到很多,MySQL的日志檔案,命名都是由mysql-bin.0000xx,不過這些檔案都是二進制的,需要用mysql的工具才能看出來到底是什么,
第五步:查看二進制檔案具體SQL
mysqlbinlog -v --base64-output=decode-rows /usr/local/mysql/data/mysql-bin.0000xx |grep -i -A 50 -B 50 '誤洗掉的表名' >> 0xx.sql
上面這個命令的意思是指定SQL日志的二級制檔案,將二級制檔案決議成SQL陳述句,輸出到0xx目錄,多個自行更改
因為作者這里表創建的時間比較長,所以我不知道具體是在那個檔案,只能全部查看,如果你知道那個時間可以查看指定的就好了,
這個檔案有規律,就寫了一個小java實體用來生成
public static void main(String[] args) {
for (int i = 1; i <= 48; i++) {
String format = String.format("%02d", i);
String s = "mysqlbinlog -v --base64-output=decode-rows /usr/local/mysql/data/mysql-bin.0000"+format+" |grep -i -A 50 -B 50 '誤洗掉的表名' >> 0"+format+".sql";
System.out.println(s);
}
}
給這些命令復制到shell命令執行,就可以在當前目錄下生成0x.sql檔案,將檔案下載到本地
第六步:查看生成的SQL檔案

如果是一個檔案可以肉眼查看,因為作者生成了48個檔案,肉眼看比較麻煩,所有又寫了一個java實體,通過io查找命令
public static void main(String[] args) throws Exception {
//這里輸入你自己的表名稱
String tableName = "表名稱";
//這里輸入你到處的日志路徑
File file = new File("C:\\Users\\Lenovo\\Desktop\\資料恢復");
File[] files = file.listFiles();
for (File file1 : files) {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file1)));
String line = null;
System.out.println("<<<<<<<<<<<<<<<< 正在讀取"+file1.getName()+"檔案 >>>>>>>>>>>>>>>>");
while ((line = br.readLine()) != null) {
if(line.indexOf(tableName) == -1){
continue;
}
System.out.println(line+";");
}
}
}
這段代碼java執行成功后,控制臺會有很多SQL陳述句,資料無價,最好還是肉眼篩選,看是否有需要的SQL陳述句資料,將資料復制到資料庫執行
第七步:執行SQL
這個就不多說了,相信你也會了~!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/549100.html
標籤:其他
下一篇:MYSQL基礎知識之DDL陳述句
