sql >> Base de Datos >  >> RDS >> Mysql

Restaurar la estructura de la tabla desde archivos frm e ibd

Restauré la tabla desde solo .frm y .idb archivos.

Obtener la consulta SQL para crear las tablas

Si ya conoce el esquema de sus tablas, puede omitir este paso.

  1. Primero, instale MySQL Utilities .Entonces puedes usar mysqlfrm comando en el símbolo del sistema (cmd).

  2. En segundo lugar, obtenga las consultas SQL de .frm archivos usando mysqlfrm comando:

    mysqlfrm --diagnostic <path>/example_table.frm
    

Luego puede obtener la consulta SQL para crear la misma tabla estructurada. Así:

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;

Crea las tablas

Cree la(s) tabla(s) utilizando la consulta SQL anterior.

Si los datos antiguos aún existen, es posible que primero deba eliminar la base de datos y las tablas correspondientes. Asegúrese de tener una copia de seguridad de los archivos de datos.

Restaurar los datos

Ejecute esta consulta para eliminar nuevos datos de la tabla:

ALTER TABLE example_table DISCARD TABLESPACE;

Esto elimina las conexiones entre el nuevo .frm y el (nuevo, vacío) .idb expediente. Además, elimine el .idb archivo en la carpeta.

Luego, coloque el viejo .idb archivo en la nueva carpeta, por ejemplo:

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

Asegúrese de que .ibd los archivos pueden ser leídos por mysql usuario, por ej. ejecutando chown -R mysql:mysql *.ibd en la carpeta.

Ejecute esta consulta para importar datos antiguos:

ALTER TABLE example_table IMPORT TABLESPACE;

Esto importa datos de .idb archivo y restaurará los datos.