Voici le manuel utilisateur officiel de DBRECOVER pour MySQL. Utilisez la table des matières à gauche pour accéder directement à un scénario de récupération précis ; pour une vue d'ensemble de bout en bout, lisez le document de haut en bas.

Présentation

DBRECOVER pour MySQL est un outil de récupération MySQL/InnoDB. Lorsqu'aucune sauvegarde exploitable n'est disponible, il permet de récupérer les données après un crash d'instance, un dictionnaire InnoDB corrompu empêchant le démarrage de la base, un DROP DATABASE, un DROP TABLE, un TRUNCATE TABLE, un DELETE au niveau de la ligne, ainsi qu'après une défaillance disque ou un endommagement du système de fichiers.

Fonctionnalités :

  • Interface graphique — aucune ligne de commande requise.
  • Prend en charge MySQL 5.1 à 8.0, y compris le nouveau dictionnaire de données de MySQL 8.0.
  • Moteur de stockage InnoDB uniquement.
  • Récupère les données après DROP DATABASE, DROP TABLE, TRUNCATE TABLE et DELETE au niveau de la ligne.
  • Récupère après une défaillance disque ou un endommagement du système de fichiers.
  • Lit les fichiers FRM et les convertit en instructions CREATE TABLE.
  • Récupère les objets volumineux (LOB / TEXT).
  • Génère les résultats sous forme de fichiers SQL au format MYSQLDUMP.
  • Basé sur Java ; fonctionne sous Windows, Red Hat, CentOS et Ubuntu.
  • Logiciel gratuit : DBRECOVER pour MySQL est libre d'utilisation et ne nécessite aucun achat de licence.
Interface principale de DBRECOVER pour MySQL
Capture d'écran du flux de travail DBRECOVER pour MySQL
Capture d'écran du flux de travail DBRECOVER pour MySQL
Capture d'écran du flux de travail DBRECOVER pour MySQL
Capture d'écran du flux de travail DBRECOVER pour MySQL
Capture d'écran du flux de travail DBRECOVER pour MySQL

Une fois que DBRECOVER a généré le SQL au format MYSQLDUMP, vous pouvez le réimporter dans MySQL et vérifier le nombre de lignes :

MySQL Client
mysql -uroot -p < actor.sql
Enter password: ********


mysql -uroot -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.14 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use  employees;
Database changed

mysql> select count(*) from actor;
+----------+
| count(*) |
+----------+
|     200  |
+----------+
1 row in set (0.00 sec)

Récupérer après un DROP DATABASE

Reproduisez la panne pour la démonstration :

MySQL Client
mysql> drop database employees;
Query OK, 14 rows affected (0.16 sec)

#sync
#sync
  1. Démarrez le logiciel DBRECOVER pour MySQL et sélectionnez le scénario de récupération DROP DATABASE.
Sélection du scénario de récupération DROP DATABASE
  1. Choisissez la version correcte de la base de données MySQL.
Choix de la version de MySQL
  1. Choisissez SELECT DIRECTORY (Sélectionner le répertoire) et saisissez le chemin du répertoire @@datadir, puis cliquez sur Start (Démarrer).
Sélection du datadir
  1. Le logiciel analyse les fichiers ibdata1 ou mysql.ibd ainsi que le disque @@datadir.
Progression de l'analyse
  1. Cliquez sur le nœud des bases de données supprimées pour rechercher et récupérer les tables des bases supprimées.
Arborescence des tables récupérées

Récupérer après un DROP TABLE et un TRUNCATE TABLE

Les étapes de récupération s'appliquent aussi bien aux scénarios DROP TABLE qu'à TRUNCATE TABLE. Commencez par reproduire la panne :

MySQL Client
mysql> select count(*) from employees.employees;

+----------+
| count(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.09 sec)

mysql> select @@datadir;
+-----------+
| @@datadir |
+-----------+
| /m01/     |
+-----------+
1 row in set (0.00 sec)

mysql> drop table employees.employees;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails


mysql> SET FOREIGN_KEY_CHECKS=0;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table employees.employees;
Query OK, 0 rows affected (0.02 sec)

mysql> ^DBye


#sync
#sync
Reproduction du DROP TABLE
  1. Démarrez le logiciel et sélectionnez le scénario de récupération DROP TABLE.
Sélection du scénario de récupération DROP TABLE
  1. Choisissez la version correcte de la base de données MySQL.
Choix de la version de MySQL
  1. Sélectionnez SELECT DIRECTORY (Sélectionner le répertoire), saisissez le chemin du répertoire @@datadir, puis cliquez sur Start (Démarrer).
Sélection du datadir
  1. Le logiciel analyse ibdata1 ou mysql.ibd ainsi que le disque sur lequel se trouve @@datadir.

Important : faites pointer DBRECOVER vers le @@datadir d'origine, et non vers une copie réalisée après la panne. DBRECOVER analyse le système de fichiers du point de montage de @@datadir pour retrouver les données supprimées, et un répertoire copié perd ces informations au niveau du système de fichiers.

Résultats de l'analyse
  1. Cliquez sur le nœud des tables supprimées sous la base de données correspondante pour vérifier la présence de la table supprimée.
Nœud des tables supprimées

Pour TRUNCATE TABLE, la table reste répertoriée sous le nœud habituel de sa base de données — ouvrez-la dans l'arborescence pour visualiser et exporter les données.

Le contenu de la table apparaît à droite de l'interface ; à partir de là, suivez le flux d'exportation standard.

Récupérer les lignes supprimées par une instruction DELETE

Lorsque des lignes ont été supprimées par un DELETE accidentel, récupérez-les grâce à la fonctionnalité d'undelete de DBRECOVER pour MySQL. Commencez par reproduire la panne :

MySQL Client
mysql> use  employees;
Database changed

mysql> select count(*) from employees;
+----------+
| count(*) |
+----------+
|     1000 |
+----------+
1 row in set (0.00 sec)


mysql> delete from employees;


mysql> flush table employees with read lock;
Query OK, 0 rows affected (0.01 sec)
  1. Localisez le fichier .ibd correspondant, par exemple employees.ibd pour la table employees.
  2. Démarrez DBRECOVER pour MySQL, sélectionnez Add ibd file (Ajouter un fichier ibd) dans le menu de démarrage, puis ajoutez le fichier ibd.
Ajouter un fichier ibd
  1. Effectuez un clic droit sur le fichier ibd et choisissez Scan (Analyser). Une fois l'analyse terminée, les fichiers de pages correspondants apparaissent.
Analyse du fichier ibd
Fichiers de pages après analyse
  1. Effectuez un clic droit et collez l'instruction CREATE TABLE de la table (utilisez SHOW CREATE TABLE dans MySQL pour l'obtenir).
MySQL Client
mysql> show create table employees;
+-----------+-----------------------------------------------------------------------------------+
| Table     | Create Table                                                                      |
+-----------+-----------------------------------------------------------------------------------+
| employees | CREATE TABLE `employees` (
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` enum('M','F') NOT NULL,
  `hire_date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------+-----------------------------------------------------------------------------------+
1 row in set (0.01 sec)
Saisie de l'instruction CREATE TABLE
  1. Cliquez sur Confirm (Confirmer). La table apparaît à droite ; cliquez sur Deleted Data (Données supprimées) pour visualiser les lignes récupérables.
Vue des données supprimées
  1. Cliquez sur Export to file (Exporter vers un fichier) pour récupérer les données supprimées sous forme d'instructions INSERT au format MYSQLDUMP.
Exporter vers un fichier

Conversion des fichiers FRM en SQL CREATE TABLE

DBRECOVER pour MySQL peut lire gratuitement les fichiers FRM et les reconvertir en instructions CREATE TABLE — aucune licence n'est requise.

Point d'entrée des fichiers FRM
  1. Sélectionnez Add frm file (Ajouter un fichier frm) dans l'interface principale du logiciel.
  2. Double-cliquez sur le fichier FRM ajouté (ou effectuez un clic droit pour l'afficher). L'instruction CREATE TABLE reconstruite apparaît à droite de l'interface, prête à être copiée.
CREATE TABLE généré à partir du fichier FRM

Vérifier le nombre de lignes récupérables sur les tables de données

Cette fonctionnalité indique combien de lignes DBRECOVER peut récupérer dans une table donnée — utile pour estimer l'ampleur de la récupération avant l'export.

Effectuez un clic droit sur la table et sélectionnez Show Table Recoverable Row Count (Afficher le nombre de lignes récupérables de la table).

Menu Show Table Recoverable Row Count
Résultat du nombre de lignes récupérables

Pour les cas de récupération non couverts par ce manuel, ou pour une assistance de récupération payante, contactez liu.maclean@gmail.com ou consultez la page produit DBRECOVER pour MySQL.