麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 編程設計 > 正文

phpmyadmin誤刪表后使用二進制恢復表的方法

2020-06-27 15:28:48
字體:
來源:轉載
供稿:網友

在用phpmyadmin刪除測試數據時,竟然將整個表刪除了:

phpmyadmin,誤刪表,二進制恢復表

等程序運行出錯時,才出現整個表都沒有了,而且之前也沒有備份好!

服務器是linux的,我不是很熟悉,也不知道mysql裝在哪。

我在phpmyadmin中看到了這個:

phpmyadmin,誤刪表,二進制恢復表

腦里出來了google上說的用二進制恢復,就點開看一下。結果大喜!OMG,服務器開通了日志!

phpmyadmin,誤刪表,二進制恢復表

里面有數據庫的操作日志,而且還是sql格式的!!!

我之前沒有接觸過這個東西,但這時它就是我的救命稻草。

我瀏覽了一下,里面有近一個月的更新記錄,已經足夠了。不過有一個問題,在phpmyadmin里面看,只能顯示其中一小部份內容,面對10幾w的數據行,想要一個個找出被刪表的數據,太難了。

這時,我想到了可以從服務器中下載這些文件,然后得到其中的數據。

說干就干,我登錄服務器,搜索這些二進制文件:

phpmyadmin,誤刪表,二進制恢復表

上圖中紅圈的就是了

然后將這些文件一個個導出成可以閱讀的sql:

phpmyadmin,誤刪表,二進制恢復表

這樣將這些二進制文件一個個輸出成了正常的sql文件。

這時,就是要從這些文件中找到被刪表相關的數據了,于是我寫了個java程序幫我做這個事情:

 

復制代碼
代碼如下:

package com.nerve.sql.reload;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

import org.nerve.util.NumberUtil;

/**
* @project: cloudOffice_swing
* @file: ReloadWorker.java
* @package: com.nerve.sql.reload
* @description:
* 將二進制日志導出的文件中相應表的操作記錄提出出來
* @author: 集成顯卡 <a href="mailto:[email protected]">[email protected]</a>
* @date&time: Jan 23, 2014
* @change log:
*/
public class ReloadWorker {

public void read(List<String> orgF, String targetF, String table) throws Exception{
BufferedWriter bw = new BufferedWriter(new FileWriter(targetF, true));

for(String or:orgF){
BufferedReader br = new BufferedReader(new FileReader(or));
String t = null;
String t2 = null;
table = table.toUpperCase();
while((t=br.readLine())!=null){
t2 = t.toUpperCase();
/*
* 如果是update操作,直接提出
*/
if(t2.startsWith("UPDATE "+table)){
bw.append(t+";/n");
}
/*
* 如果是insert語句,因為有一些舊服務器的數據
* 所以要先執行delete操作
*/
else if(t2.startsWith("INSERT INTO "+table)){
String ids = t2.substring(t2.lastIndexOf(","));
bw.append("delete from "+table+" where id="+NumberUtil.toDigital(ids)+";/n");
bw.append(t+";/n");
}
/*
* sql語句后面都要加 ; ,因為原來沒有,不加的話,在導入到數據庫時,出錯
*/
}
br.close();
}

bw.flush();
bw.close();
}

public static void main(String[] args) throws Exception{
long sd = System.currentTimeMillis();
ReloadWorker w = new ReloadWorker();
List<String> orgs = new ArrayList<String>();
orgs.add("C:/Users/IBM_ADMIN/Desktop/000015.txt");
orgs.add("C:/Users/IBM_ADMIN/Desktop/000016.txt");
orgs.add("C:/Users/IBM_ADMIN/Desktop/000017.txt");
orgs.add("C:/Users/IBM_ADMIN/Desktop/000018.txt");
orgs.add("C:/Users/IBM_ADMIN/Desktop/000019.txt");

String targetS = "C:/Users/IBM_ADMIN/Desktop/000017_sql.txt";
w.read(orgs, targetS, "task");

System.out.println("DONE, on " +(System.currentTimeMillis() - sd)/1000+" s");
}
}

 

得到了匯總的sql文件后,就導入到數據庫中。

最后,出一個運行圖:

 phpmyadmin,誤刪表,二進制恢復表

終于松了一口氣。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品91久久久 | 91中文字幕在线观看 | 黄色毛片一级 | 国产日韩中文字幕 | 少妇一级淫片免费放播放 | 在线香蕉视频 | 蜜桃传媒视频麻豆第一区免费观看 | 亚州综合图片 | 免费观看的毛片手机视频 | 久久久久久久久久久久久久久伊免 | 免费黄色小网站 | 精品一区二区三区免费视频 | 免费成人 | 精品国产乱码久久久久久丨区2区 | 欧美日韩大片在线观看 | 成人福利视频在线观看 | 羞羞草视频 | 久久国产精品久久久久久电车 | 国产自91精品一区二区 | 日本一区视频在线观看 | 国产亚洲在 | 日韩视频一区二区三区在线观看 | 天天草天天色 | 国产精品99久久99久久久二 | 激情免费视频 | 久久久www视频 | 久久亚洲美女视频 | 羞羞视频免费网站含羞草 | 欧美一级毛片免费观看视频 | 亚洲成人激情在线 | 国产一区二区高清在线 | 国产色片在线观看 | 久草免费新视频 | 国产二区三区在线播放 | 717影院理论午夜伦八戒秦先生 | 综合日韩av| 欧美成人一级片 | 久久免费视频3 | 久草成人在线观看 | 一级成人欧美一区在线观看 | 亚洲第一视频 |