首頁 資料庫 mysql教程 phpmyadmin误删表后的恢复过程(心惊胆跳啊)

phpmyadmin误删表后的恢复过程(心惊胆跳啊)

Jun 07, 2016 pm 03:28 PM
phpmyadmin 恢復 誤刪 過程

话说今天不知道是抽风了还是失魂了,在用phpmyadmin删除测试数据时,竟然将整个表删除了: 等程序运行出错时,才出现整个表都没有了,而且之前也没有备份好!这下蛋疼了,这个可是production服务器,里面的数据可不能丢啊! 服务器是linux的,我不是很熟悉,

话说今天不知道是抽风了还是失魂了,在用phpmyadmin删除测试数据时,竟然将整个表删除了:

\

\ 等程序运行出错时,才出现整个表都没有了,而且之前也没有备份好!这下蛋疼了,这个可是production服务器,里面的数据可不能丢啊! 服务器是linux的,我不是很熟悉,也不知道mysql装在哪。无奈之下,google,发现有不少人也有像我一样犯傻的一回,但是几乎没有看到具体的解决方法(有说用硬盘软件找回,也有说用二进制文件找回),但是我本身对服务器不大懂,觉得好纠结,那边又在催说数据怎么没有了,还说一定得找回来。这下我更急了,晚饭都没心情吃。 这时,我找到了一些专门帮人恢复数据的技术人员。他问了我数据量,数据库引擎,当我说是‘myisam’时,他来了句:那无解了。。当时我一下子懵了。 情急之下,我想到了,之前在testing服务器里面有一个副本数据库,但是那里的数据已经有些时日了,根本没有最新一个月的数据。这根本无法解救我! 这里我在phpmyadmin中看到了这个: \ 脑里出来了google上说的用二进制恢复,就点开看一下。结果大喜!OMG,服务器开通了日志! \ 里面有数据库的操作日志,而且还是sql格式的!!!我之前没有接触过这个东西,但这时它就是我的救命稻草。我浏览了一下,里面有近一个月的更新记录,已经足够了。不过有一个问题,在phpmyadmin里面看,只能显示其中一小部份内容,面对10几w的数据行,想要一个个找出被删表的数据,太难了。 这时,我想到了可以从服务器中下载这些文件,然后得到其中的数据。说干就干,我登录服务器,搜索这些二进制文件: \ 上图中红圈的就是了 然后将这些文件一个个导出成可以阅读的sql: \ 这样将这些二进制文件一个个输出成了正常的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: 集成显卡    1053214511@qq.com
 * @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文件后,就导入到数据库中。最后,出一个运行图: \ 终于松了一口气。(虽然这次导入花了5分钟。。) 最后提醒大家,一定要常备份,谨慎操作啊!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
phpmyadmin怎麼設定主鍵 phpmyadmin怎麼設定主鍵 Apr 07, 2024 pm 02:54 PM

表的主鍵是一列或多列,用於唯一識別表中每筆記錄。設定主鍵的步驟如下:登入 phpMyAdmin。選擇資料庫和表格。勾選要作為主鍵的列。點選 "儲存變更"。主鍵具有資料完整性、查找速度和關係建模方面的好處。

phpmyadmin日誌在哪裡 phpmyadmin日誌在哪裡 Apr 07, 2024 pm 12:57 PM

PHPMyAdmin日誌檔案的預設位置:Linux/Unix/macOS:/var/log/phpmyadminWindows:C:\xampp\phpMyAdmin\logs\日誌檔案用途:故障排除稽核安全性

phpmyadmin怎麼加入外鍵 phpmyadmin怎麼加入外鍵 Apr 07, 2024 pm 02:36 PM

在 phpMyAdmin 中新增外鍵可以透過以下步驟實現:選擇包含外鍵的父表。編輯父表結構,在「列」中新增列。啟用外鍵約束,選擇引用表和鍵。設定更新/刪除操作。儲存更改。

phpmyadmin怎麼刪除資料表 phpmyadmin怎麼刪除資料表 Apr 07, 2024 pm 03:00 PM

phpMyAdmin 中刪除資料表的步驟:選擇資料庫和資料表;點選「操作」標籤;選擇「刪除」選項;確認並執行刪除操作。

wordpress的資料庫存在什麼地方 wordpress的資料庫存在什麼地方 Apr 15, 2024 pm 10:39 PM

WordPress 資料庫位於 MySQL 資料庫中,儲存所有網站數據,可以透過託管提供者的儀表板、FTP 或 phpMyAdmin 存取。資料庫名稱與網站 URL 或使用者名稱相關,存取需要使用資料庫憑證,包括名稱、使用者名稱、密碼和主機名,這些憑證通常儲存在「wp-config.php」檔案中。

為什麼phpmyadmin拒絕訪問 為什麼phpmyadmin拒絕訪問 Apr 07, 2024 pm 01:03 PM

phpMyAdmin 拒絕存取的原因及解決方案:認證失敗:檢查使用者名稱和密碼是否正確。伺服器配置錯誤:調整防火牆設置,檢查資料庫連接埠是否正確。權限問題:授予使用者對資料庫的存取權限。會話逾時:刷新瀏覽器頁面重新連線。 phpMyAdmin 設定錯誤:檢查設定檔和檔案權限,確保啟用了必要的 Apache 模組。伺服器問題:等待一段時間後再重試或聯絡主機提供者。

phpmyadmin帳號密碼是什麼 phpmyadmin帳號密碼是什麼 Apr 07, 2024 pm 01:09 PM

PHPMyAdmin 的預設使用者名稱和密碼為 root 和空。為了安全起見,建議更改預設密碼。更改密碼的方法:1. 登入 PHPMyAdmin;2. 選擇 "privileges";3. 輸入新密碼並儲存。忘記密碼時,可透過停止MySQL 服務並編輯設定檔的方式重設密碼:1. 新增skip-grant-tables 行;2. 登入MySQL 命令列並重設root 密碼;3. 刷新權限表;4. 刪除skip-grant-tables 行,重啟MySQL 服務。

phpmyadmin關聯視圖在哪 phpmyadmin關聯視圖在哪 Apr 07, 2024 pm 01:00 PM

可以在 phpMyAdmin 中「結構」標籤下的「視圖」子選單中找到關聯視圖。要存取它們,只需選擇資料庫、點擊「結構」標籤、然後點擊「檢視」子選單。

See all articles