mysqldump, ¿Que es, y para qué sirve? ¡Con ejemplos!
El comando mysqldump es uno de los más potentes que acompaña al servidor MySQL. Esta herramienta es básica para casi cualquier situación, y tiene una importancia muy alta en la gestión de bases de datos. El motivo es simple. Gracias a ella, podremos realizar copias de seguridad (backup) de nuestras bases de datos. ¡Imagina lo vital que es!
mysqldump se incluye dentro de las utilidades de MySQL, por lo que, la tendremos disponible sin necesidad de instalarla. Siempre y cuando, claro está, que estemos usando como servidor de base de datos MySQL (o MariaDB, que es un fork de MySQL). Puedes comprobar que tienes la herramienta instalada, mediante una consola de comandos, utilizando:
1 | mysqldump |
Al utilizar el comando, nos indicará las opciones para realizar copias de nuestras bases de datos. No obstante, te las vamos a explicar en este post.
Contenidos
Realizar backup con mysqldump
Para realizar un backup de nuestra base de datos, vamos a tener que indicar los detalles de la base de datos que queremos dumpear (realizar el backup). Los detalles de una base de datos, son tres. Nombre de la base de datos, usuario de la base de datos, y contraseña de la base de datos. Si conocemos dichos datos, podremos obtener un dumpeo de la base de datos de la siguiente forma:
1 | mysqldump --user=USUARIO_BASE_DATOS --password=PASSWORD_BASE_DATOS NOMBRE_BASE_DATOS > nombredelacopiadeseguridad.sql |
Como vemos, introducimos los 3 datos necesarios comentados. Por un lado, el usuario, por otro el password, y hay que fijarse, que después del password, dejamos un espacio, para indicar el nombre de la base de datos que queremos dumpear.
Hay que tener en cuenta, que introduciendo dicho comando, podemos dejar en el historial datos sensibles como la contraseña, por lo que es posible dejar el password vacío. Una vez presionemos enter, la herramienta nos solicitará el backup que podremos introducir, y una vez realizado, volvemos a pulsar enter, para que el backup se realice. Para introducir el password una vez presionemos enter, deberemos utilizar en lugar de «–password=» por la opción «-p». Tal que así:
1 | mysqldump --user=USUARIO_BASE_DATOS -p NOMBRE_BASE_DATOS > nombredelacopiadeseguridad.sql |
De ese modo, una vez presionemos enter, nos solicitará la contraseña de nuestra base de datos, sin que esta aparezca por ningún lado, aumentando de ese modo, la seguridad.
También es posible reemplazar la opción «–user=» por «-u», donde introduciremos el usuario seguido de la opción.
Un ejemplo practico, es que si tenemos una base de datos con el nombre datosprograma, que su usuario es gestiondatos, para hacer una copia de seguridad, utilizaremos:
1 | mysqldump -ugestiondatos -p datosprograma > nombredelacopiadeseguridad.sql |
Al hacer intro, nos aparecerá:
1 2 | mysqldump -ugestiondatos -p datosprograma > nombredelacopiadeseguridad.sql Enter Password: |
Tecleando nuestro password de la base de datos, realizará la copia de seguridad.
Hay que tener en cuenta, el directorio donde estamos, y que tenga suficiente espacio para almacenar la copia de seguridad, especialmente, si la base de datos es grande. Al ejecutar el comando, el directorio donde este situado, es el directorio que almacenará el archivo «nombredelacopiadeseguridad.sql».
Backup de todas las bases de datos
En ocasiones, en lugar de querer dumpear una base de datos, es posible que queramos tener una copia de seguridad de todas las que tengamos en el servidor. Para ello, en lugar de utilizar el nombre de la base de datos, utilizaremos la opción «–all-databases». Ten en cuenta, que en este caso, por permisos, necesitarás utilizar el de un usuario que tenga permisos para dumpear todas las bases de datos. Generalmente, esto ocurre con el usuario root (en paneles cPanel, por ejemplo), o el usuario admin (en paneles Plesk). El comando, quedaría tal que así:
1 | mysqldump --uadmin -p --all-databases > nombredelacopiadeseguridad.sql |
Recuperar backup realizado con mysqldump
Para recuperar un backup realizado con el comando mysqldump, recurrimos a mysql. Así, por ejemplo, en el ejemplo anterior, hemos realizado un backup de la base de datos llamada «datosprograma» en «nombredelacopiadeseguridad.sql». Pues bien, para recuperar dicho dumpeo, vamos a hacer justo lo contrario, pero con el comando mysql.
1 | mysql -ugestiondatos -p datosprograma < nombredelacopiadeseguridad.sql |
¿Que cambia con respecto al comando que realiza el backup? Dos cosas muy específicas. En lugar de mysqldump, utilizamos mysql como hemos comentado, y el carácter «<". Para hacer el backup utilizamos ">«, mientras que para recuperarlo, utilizamos «<". Para recuperar el backup, sirven exactamente todas las mismas opciones que para realizarlo. Desde usar la opción "--usuario", a solo "-u", o utilizar la opción "--password=" o solo "-p", así, como por seguridad, tal y como hemos comentado antes, dejar el "-p" en blanco para introducirlo posteriormente sin que deje rastro. En realidad, el comando podría ser más simple, y no indicar el nombre de la base de datos, ya que esa información ya la tiene el archivo dumpeado, pero no está de más indicarlo. Ten en cuenta, en cualquier caso, que al ejecutar el comando, borrará todo lo que contenga la base de datos original, siendo reemplazado por todo lo que contenga el archivo dumpeado. También es posible utilizar el archivo dumpeado, para importarlo en una nueva base de datos, de cara a realizar pruebas, o en un entorno de desarrollo.
Si tienes alguna duda o consulta, no dudes en comentar la entrada, ¡trataremos de ayudarte!. En cambio, si no te atreves a realizar estas acciones, y quieres que las realicemos por ti, recuerda que nuestro equipo está a tu entera disposición, independientemente de donde tengas el servidor, puedes adquirir un sysadmin por horas: