Maison base de données tutoriel mysql phpmyadmin误删表后的恢复过程(心惊胆跳啊)

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

Jun 07, 2016 pm 03:28 PM
phpmyadmin 恢复 误删 processus

话说今天不知道是抽风了还是失魂了,在用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");
    }
}
Copier après la connexion
得到了汇总的sql文件后,就导入到数据库中。最后,出一个运行图: \ 终于松了一口气。(虽然这次导入花了5分钟。。) 最后提醒大家,一定要常备份,谨慎操作啊!
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment définir la clé primaire dans phpmyadmin Comment définir la clé primaire dans phpmyadmin Apr 07, 2024 pm 02:54 PM

La clé primaire d'une table est constituée d'une ou plusieurs colonnes qui identifient de manière unique chaque enregistrement de la table. Voici les étapes pour définir une clé primaire : Connectez-vous à phpMyAdmin. Sélectionnez la base de données et la table. Cochez la colonne que vous souhaitez utiliser comme clé primaire. Cliquez sur "Enregistrer les modifications". Les clés primaires offrent des avantages en matière d’intégrité des données, de vitesse de recherche et de modélisation des relations.

Comment ajouter des clés étrangères dans phpmyadmin Comment ajouter des clés étrangères dans phpmyadmin Apr 07, 2024 pm 02:36 PM

L'ajout d'une clé étrangère dans phpMyAdmin peut être réalisé en suivant ces étapes : Sélectionnez la table parent qui contient la clé étrangère. Modifiez la structure de la table parent et ajoutez de nouvelles colonnes dans "Colonnes". Activez les contraintes de clé étrangère et sélectionnez la table et la clé de référencement. Définir les opérations de mise à jour/suppression. Sauvegarder les modifications.

Où est le journal phpmyadmin ? Où est le journal phpmyadmin ? Apr 07, 2024 pm 12:57 PM

Emplacement par défaut des fichiers journaux PHPMyAdmin : Linux/Unix/macOS:/var/log/phpmyadminWindows : C:\xampp\phpMyAdmin\logs\ Objectif du fichier journal : Dépannage de la sécurité de l'audit

Où existe la base de données wordpress ? Où existe la base de données wordpress ? Apr 15, 2024 pm 10:39 PM

La base de données WordPress est hébergée dans une base de données MySQL qui stocke toutes les données du site Web et est accessible via le tableau de bord de votre fournisseur d'hébergement, FTP ou phpMyAdmin. Le nom de la base de données est lié à l'URL du site Web ou au nom d'utilisateur, et l'accès nécessite l'utilisation des informations d'identification de la base de données, notamment le nom, le nom d'utilisateur, le mot de passe et le nom d'hôte, qui sont généralement stockés dans le fichier « wp-config.php ».

Quel est le mot de passe du compte phpmyadmin ? Quel est le mot de passe du compte phpmyadmin ? Apr 07, 2024 pm 01:09 PM

Le nom d'utilisateur et le mot de passe par défaut pour PHPMyAdmin sont root et vides. Pour des raisons de sécurité, il est recommandé de modifier le mot de passe par défaut. Méthode pour changer le mot de passe : 1. Connectez-vous à PHPMyAdmin ; 2. Sélectionnez « privilèges » 3. Saisissez le nouveau mot de passe et enregistrez-le. Lorsque vous oubliez votre mot de passe, vous pouvez le réinitialiser en arrêtant le service MySQL et en modifiant le fichier de configuration : 1. Ajoutez la ligne skip-grant-tables ; 2. Connectez-vous à la ligne de commande MySQL et réinitialisez le mot de passe root ; la table des autorisations ; 4. Supprimez la ligne skip-grant-tables, redémarrez le service MySQL.

Comment supprimer une table de données dans phpmyadmin Comment supprimer une table de données dans phpmyadmin Apr 07, 2024 pm 03:00 PM

Étapes pour supprimer une table de données dans phpMyAdmin : Sélectionnez la base de données et la table de données ; cliquez sur l'onglet « Action » ; sélectionnez l'option « Supprimer » ; confirmez et effectuez l'opération de suppression.

pourquoi l'accès à phpmyadmin a été refusé pourquoi l'accès à phpmyadmin a été refusé Apr 07, 2024 pm 01:03 PM

Raisons et solutions d'accès refusé par phpMyAdmin : Échec de l'authentification : Vérifiez si le nom d'utilisateur et le mot de passe sont corrects. Erreur de configuration du serveur : ajustez les paramètres du pare-feu et vérifiez si le port de la base de données est correct. Problème d'autorisations : accorder aux utilisateurs l'accès à la base de données. Délai d'expiration de la session : actualisez la page du navigateur et reconnectez-vous. Erreur de configuration phpMyAdmin : vérifiez le fichier de configuration et les autorisations du fichier pour vous assurer que les modules Apache requis sont activés. Problème de serveur : attendez un moment et réessayez ou contactez votre fournisseur d'hébergement.

À quel type de vulnérabilité appartient la vulnérabilité phpmyadmin ? À quel type de vulnérabilité appartient la vulnérabilité phpmyadmin ? Apr 07, 2024 pm 01:36 PM

phpMyAdmin est sensible à plusieurs vulnérabilités, notamment : 1. Vulnérabilité d'injection SQL ; 2. Vulnérabilité de script intersite (XSS) ; 3. Vulnérabilité d'exécution de code à distance (RCE) ; 4. Vulnérabilité d'inclusion de fichiers locaux (LFI) ; Vulnérabilité ; 6. Vulnérabilité d’élévation de privilèges.

See all articles