Algunas veces puede ocurrir que por pereza, solo tengamos un backup completo (mysqldump –all-databases) con más de una base de datos y queramos restaurar una única base de datos. Por internet circulan algunos tips algo peligrosos como es el uso de mysql –one-database, el cual no es aconsejable. Conozco algún gurú que al final, lo que hace es recuperar la copia en un sistema local y después hacer el dump de la base de datos. Toda una perdida de tiempo.
Contenidos
Esta opción esta desaconsejada incluso por MySQL, y puede ser útil en ciertos escenarios (sobre todo cuando trabajamos con logs binarios), que requiere un conocimiento más elevado de MySQL que a lo que solemos estar acostumbrados. Mejor ir a lo práctico.
Para mi la mejor opción que llevo años usándola. Sencilla, eficaz y adaptable, ya que para mas tranquilidad podemos adecuar el código para hacerlo en dos pasos, con el fin de verificar o de manipular la salida, si queremos cambiar de nombre la base de datos.
sed -n '/^-- Current Database: `nombre_de_la_base_de_datos`/,/^-- Current Database: `/p' nombre_del_backup.sql > nombre_de_la_base_de_datos.sql
cat mysqldumped.sql | \
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \
sed -e '$d' | \
mysql -u user -p
cat all-databases.sql | sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | sed -e '$d' | mysql -u user -p
Evidentemente podemos adaptar el script para que en lugar de hacer el restore directamente volquemos la salida a un fichero de texto, con el fin de verificar y/o manipular los datos de la salida.
Comparte este artículo
Bueno, en vez de hacer un nuevo artículo prefiero poner la solución actualizando este.
¿Alguna has necesitado o necesitas restaurar una sala tabla? Bueno es sencillo solo hay que cambiar un poco el código anterior
sed -n '/^-- Table structure for table nombre_de_la_tabla/,/^-- Table structure for table /p' backup_de_la_base_dedatos.sql > nombre_de_la_tabla.sql
cat backup_de_database.sql|sed -n -e '/-- Table structure for table nombre_de_la_tabla/,/-- Table structure for table/ p' | sed -e '$d' | mysql nombre_de_la_base_de_datos
Un error de transcripción no muestra los acentos invertidos que deben rodear a nombre_de_la_tabla
Espero que te sea útil.
Comparte este articulo en
Una reflexión para responsables de sistemas, CTOs, directores de producto y administradores con responsabilidad sobre…
Estimada empresa: Les escribo para expresar mi profundo descontento con el servicio recibido tras contratar…
En el ecosistema de la lucha contra el spam, Spamhaus es una de las organizaciones…
¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…
Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…
La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…
Ver comentarios
Un tip adicional. Si queremos volcar la tabla en otra con otro nombre hay que cambiar, los insert, los locks, el create de la tabla etc.