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
¡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…
No es la primera vez que me encuentro con el agotamiento de la memoria en…
Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…
Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…
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.