Mysql
 sql >> Base de données >  >> RDS >> Mysql

Restaurer la structure de la table à partir des fichiers frm et ibd

J'ai restauré la table uniquement à partir de .frm et .idb fichiers.

Obtenir la requête SQL pour créer les tables

Si vous connaissez déjà le schéma de vos tables, vous pouvez ignorer cette étape.

  1. Tout d'abord, installez MySQL Utilities .Ensuite, vous pouvez utiliser mysqlfrm commande dans l'invite de commande (cmd).

  2. Deuxièmement, récupérez les requêtes SQL à partir de .frm fichiers utilisant mysqlfrm commande :

    mysqlfrm --diagnostic <path>/example_table.frm
    

Ensuite, vous pouvez obtenir la requête SQL pour créer la même table structurée. Comme ceci :

CREATE TABLE `example_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(150) NOT NULL,
  `photo_url` varchar(150) NOT NULL,
  `password` varchar(600) NOT NULL,
  `active` smallint(6) NOT NULL,
  `plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;

Créer les tableaux

Créez la ou les tables à l'aide de la requête SQL ci-dessus.

Si les anciennes données existent toujours, vous devrez peut-être d'abord supprimer la base de données et les tables respectives. Assurez-vous d'avoir une sauvegarde des fichiers de données.

Restaurer les données

Exécutez cette requête pour supprimer les nouvelles données de table :

ALTER TABLE example_table DISCARD TABLESPACE;

Cela supprime les connexions entre le nouveau .frm fichier et le (nouveau, vide) .idb dossier. Supprimez également le .idb fichier dans le dossier.

Ensuite, mettez l'ancien .idb fichier dans le nouveau dossier, par exemple :

cp backup/example_table.ibd <path>/example_table.idb

Assurez-vous que le .ibd les fichiers peuvent être lus par le mysql utilisateur, par ex. en exécutant chown -R mysql:mysql *.ibd dans le dossier.

Exécutez cette requête pour importer d'anciennes données :

ALTER TABLE example_table IMPORT TABLESPACE;

Cela importe les données du .idb fichier et restaurera les données.