ホームページ データベース 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpmyadminで主キーを設定する方法 phpmyadminで主キーを設定する方法 Apr 07, 2024 pm 02:54 PM

テーブルの主キーは、テーブル内の各レコードを一意に識別する 1 つ以上の列です。主キーを設定する手順は次のとおりです。 phpMyAdmin にログインします。データベースとテーブルを選択します。主キーとして使用する列にチェックを入れます。 「変更を保存」をクリックします。主キーは、データの整合性、検索速度、関係モデリングの利点を提供します。

phpmyadminで外部キーを追加する方法 phpmyadminで外部キーを追加する方法 Apr 07, 2024 pm 02:36 PM

phpMyAdmin に外部キーを追加するには、次の手順に従います。 外部キーを含む親テーブルを選択します。親テーブルの構造を編集し、「列」に新しい列を追加します。外部キー制約を有効にし、参照テーブルとキーを選択します。更新・削除の動作を設定します。変更内容を保存。

phpmyadmin ログはどこにありますか? phpmyadmin ログはどこにありますか? Apr 07, 2024 pm 12:57 PM

PHPMyAdmin ログ ファイルのデフォルトの場所: Linux/Unix/macOS:/var/log/phpmyadminWindows: C:\xampp\phpMyAdmin\logs\ ログ ファイルの目的: 監査セキュリティのトラブルシューティング

WordPress データベースはどこにありますか? WordPress データベースはどこにありますか? Apr 15, 2024 pm 10:39 PM

WordPress データベースは、すべての Web サイト データを保存する MySQL データベースに格納されており、ホスティング プロバイダーのダッシュボード、FTP、または phpMyAdmin を通じてアクセスできます。データベース名は Web サイトの URL またはユーザー名に関連付けられており、アクセスするには、名前、ユーザー名、パスワード、ホスト名などのデータベース資格情報を使用する必要があります。これらの資格情報は通常「wp-config.php」ファイルに保存されます。

phpmyadmin アカウントのパスワードは何ですか? phpmyadmin アカウントのパスワードは何ですか? Apr 07, 2024 pm 01:09 PM

PHPMyAdmin のデフォルトのユーザー名とパスワードは root で空です。セキュリティ上の理由から、デフォルトのパスワードを変更することをお勧めします。パスワードを変更する方法: 1. PHPMyAdmin にログインします; 2. 「権限」を選択します; 3. 新しいパスワードを入力して保存します。パスワードを忘れた場合は、MySQL サービスを停止して構成ファイルを編集することでパスワードをリセットできます: 1. Skip-grant-tables 行を追加します; 2. MySQL コマンド ラインにログインして root パスワードをリセットします; 3. 更新します権限テーブル; 4. Skip-grant-tables 行を削除し、MySQL サービスを再起動します。

phpmyadminでデータテーブルを削除する方法 phpmyadminでデータテーブルを削除する方法 Apr 07, 2024 pm 03:00 PM

phpMyAdmin でデータ テーブルを削除する手順: データベースとデータ テーブルを選択し、[アクション] タブをクリックし、[削除] オプションを選択し、削除操作を確認して実行します。

phpmyadmin アクセスが拒否された理由 phpmyadmin アクセスが拒否された理由 Apr 07, 2024 pm 01:03 PM

phpMyAdmin によってアクセスが拒否される理由と解決策: 認証に失敗しました: ユーザー名とパスワードが正しいかどうかを確認してください。サーバー構成エラー: ファイアウォール設定を調整し、データベース ポートが正しいかどうかを確認してください。権限の問題: ユーザーにデータベースへのアクセスを許可します。セッションタイムアウト: ブラウザページを更新して再接続します。 phpMyAdmin 設定エラー: 設定ファイルとファイルのアクセス許可をチェックして、必要な Apache モジュールが有効になっていることを確認してください。サーバーの問題: しばらく待ってから再試行するか、ホスティングプロバイダーに問い合わせてください。

phpmyadmin の脆弱性はどのような脆弱性ですか? phpmyadmin の脆弱性はどのような脆弱性ですか? Apr 07, 2024 pm 01:36 PM

phpMyAdmin は、1. SQL インジェクションの脆弱性、2. クロスサイト スクリプティング (XSS) の脆弱性、3. リモート コード実行 (RCE) の脆弱性、4. ローカル ファイル インクルード (LFI) の脆弱性、5. 情報漏えいなどの複数の脆弱性の影響を受けます。脆弱性; 6. 権限昇格の脆弱性。

See all articles