Primero, vamos a extraer las consultas para crear las tablas, lo podemos hacer con el siguiente comando>
mysqlfrm --server=user:pass@localhost --port 3307 --diagnostic /ruta/de/los/archivos/data/nombredebase/*.frm
Esto nos regresa todos los CREATE que tengamos para las tablas, guardar todo el resultado.
Creamos la base de datos, con el mismo nombre que se tenía anteriormente.
Ejecutamos la consulta que nos regresó el comando mysqlfrm, si nuestra versión de mysql es mayor a 5.6, es importante hacer este cambio:
ENGINE=InnoDB DEFAULT CHARSET=utf8;
por
ENGINE=InnoDB ROW_FORMAT=compact CHARSET=utf8;
Es decir, se remplaza DEFAULT por ROW_FORMAT=compact, realmente no se por qué, pero me llevó como una hora dar con el error, espero quien lea esto le sea más facil.
Una vez que tengamos las tablas creadas, ejecutamos lo siguiente:
ALTER TABLE nombredetabla1 DISCARD TABLESPACE;
ALTER TABLE nombredetabla2 DISCARD TABLESPACE;
ALTER TABLE nombredetabla3 DISCARD TABLESPACE;
...
ALTER TABLE nombredetablaN DISCARD TABLESPACE;
ALTER TABLE nombredetabla1 IMPORT TABLESPACE;
ALTER TABLE nombredetabla2 IMPORT TABLESPACE;
ALTER TABLE nombredetabla3 IMPORT TABLESPACE;
...
ALTER TABLE nombredetablaN IMPORT TABLESPACE;
Después de esto, ya tendremos nuestros datos importados en la tabla que se creó.
Nota: mysqlfrm es una utilidad que viene en este paquete: sudo apt-get install mysql-utilities
Saludos!
Komtec1
mysqlfrm --server=user:pass@localhost --port 3307 --diagnostic /ruta/de/los/archivos/data/nombredebase/*.frm
Esto nos regresa todos los CREATE que tengamos para las tablas, guardar todo el resultado.
Creamos la base de datos, con el mismo nombre que se tenía anteriormente.
Ejecutamos la consulta que nos regresó el comando mysqlfrm, si nuestra versión de mysql es mayor a 5.6, es importante hacer este cambio:
ENGINE=InnoDB DEFAULT CHARSET=utf8;
por
ENGINE=InnoDB ROW_FORMAT=compact CHARSET=utf8;
Es decir, se remplaza DEFAULT por ROW_FORMAT=compact, realmente no se por qué, pero me llevó como una hora dar con el error, espero quien lea esto le sea más facil.
Una vez que tengamos las tablas creadas, ejecutamos lo siguiente:
ALTER TABLE nombredetabla1 DISCARD TABLESPACE;
ALTER TABLE nombredetabla2 DISCARD TABLESPACE;
ALTER TABLE nombredetabla3 DISCARD TABLESPACE;
...
ALTER TABLE nombredetablaN DISCARD TABLESPACE;
Esta consulta borra los ficheros ibd creados por la consulta de CREATE.
Después, copiamos los ficheros ibd que tenemos respaldados (los que queremos importar) directamente a la carpeta de mysql/tabla, en debian/ubuntu se encuentra en /var/lib/mysql/nombredebase/
Asignamos el propietario mysql para los archivos:
chown -R mysql:mysql /var/lib/mysql/nombredebase/
Y al final ejecutamos:
ALTER TABLE nombredetabla1 IMPORT TABLESPACE;
ALTER TABLE nombredetabla2 IMPORT TABLESPACE;
ALTER TABLE nombredetabla3 IMPORT TABLESPACE;
...
ALTER TABLE nombredetablaN IMPORT TABLESPACE;
Después de esto, ya tendremos nuestros datos importados en la tabla que se creó.
Nota: mysqlfrm es una utilidad que viene en este paquete: sudo apt-get install mysql-utilities
Saludos!
Komtec1
Comentarios