¿Qué es mysqldump y cómo se utiliza?

Como uno de los principales disponibles gratuitamente bases de datos, MySQL es una opción popular para muchas aplicaciones web. Al estar expuesta a Internet, su aplicación está expuesta a ataques maliciosos. Si su servidor está comprometido, en el mejor de los casos, debe reinstalar la aplicación; en el peor de los casos, puede perder sus datos. Además, puede encontrarse en una situación en la que necesite migrar una base de datos de un servidor a otro.

¿Para qué se utiliza mysqldump?

La herramienta mysqldump lo tiene cubierto tanto para el compromiso del servidor como para las situaciones de migración. Su función básica es tomar una base de datos MySQL y volcarla como un archivo de texto. Pero no cualquier archivo de texto; el archivo es un conjunto de sentencias SQL. Estas declaraciones, cuando se ejecutan, reconstruyen la base de datos al estado preciso en el que se encontraba cuando se ejecutó el volcado.

Utilice mysqldump para crear exportaciones de una base de datos como copias de seguridad o cuando mueva la base de datos a un nuevo host. En cualquier caso, el archivo de texto se volverá a importar a un servidor de base de datos MySQL. Ejecutará todas las declaraciones SQL en el archivo, lo que reconstruirá la base de datos a su estado original. Esta parte no usa el comando mysqldump, pero tampoco sería posible sin esta utilidad.

los Los documentos de MySQL enumeran otros métodos para realizar copias de seguridad, pero estos tienen inconvenientes:

  • Copiar en caliente una base de datos de MySQL Enterprise es una excelente manera de lograr estas copias de seguridad, si no le importa el precio de Enterprise.
  • Copiar los directorios de datos de la base de datos puede resultar complicado al moverse entre sistemas operativos, ya que los destinos serán diferentes.
  • Exportar a un archivo de texto delimitado le dará el contenido, pero tendrá que volver a crear la estructura.
  • A menudo, puede realizar copias de seguridad de bases de datos desde programas GUI como MySQL Workbench. Pero este es un proceso manual; no es algo que pueda incluir en un script o en un trabajo por lotes.

Instale la herramienta mysqldump

Para Ventanas, consulte nuestras instrucciones para instalar MySQL en Windows 7 (el proceso de instalación es el mismo para Windows 10). En macOS, consulte nuestras instrucciones para instalar MySQL en macOS 10.7 (nuevamente, más antiguo pero aún aplicable). Usuarios de Sistemas Linux basados ​​en Ubuntu puede usar el siguiente comando para instalar el cliente y las utilidades de MySQL:

sudo apt install mysql-client. 

Extraer un volcado de MySQL

Una vez instalado, use mysqldump para obtener una copia de seguridad completa de una base de datos.

mysqldump -h [el nombre o IP de su servidor de base de datos] -u [el nombre del usuario de la base de datos] -p [el nombre de la base de datos]> db_backup.sql. 

Aquí hay una descripción de las banderas utilizadas en este comando:

  • -h: Esta bandera es el host de la base de datos. Puede ser un nombre de host completo (por ejemplo, myhost.domain.com) o una dirección IP. Deje este espacio en blanco si ejecuta el comando en el mismo host que el servidor MySQL.
  • -u: Su nombre de usuario.
  • -pag: Si aseguró correctamente la instalación de MySQL, necesitará una contraseña para conectarse. Esta bandera sin argumento le solicita una contraseña cuando ejecuta el comando. A veces es útil proporcionar la contraseña directamente como argumento para este indicador, por ejemplo, en un script de respaldo. Pero cuando se le solicite, no debería hacerlo, porque si alguien tuviera acceso a su computadora, podría obtener esta contraseña en el historial de comandos.
  • > db_backup.sql: Esta parte le dice a mysqldump que dirija su salida a un archivo. Normalmente, el comando envía todo a la consola, lo que significa que verá varias declaraciones SQL en la pantalla. El símbolo> canaliza la salida al archivo de texto nombrado. Si este archivo no existe, se crea automáticamente.

Cuando termine, tendrá un archivo .SQL. Este es un archivo de texto que contiene declaraciones SQL. Puede abrirlo en cualquier editor de texto para inspeccionar el contenido. Aquí está una exportación de una base de datos de WordPress que muestra cómo se juntan estos archivos.

Contenido de un archivo mysqldump

El archivo está dividido en secciones. La primera sección configura la tabla para los comentarios de WordPress. La segunda sección recrea el contenido de esas tablas (en este ejemplo, los registros de comentarios). Cuando vuelve a importar el volcado de MySQL, el comando funciona a través del archivo, ejecuta las declaraciones y reconstruye la base de datos tal como estaba.

Importar un archivo de volcado de MySQL

Antes de importar el archivo de volcado, necesitará una base de datos ya creada y su nombre de usuario y contraseña válidos. También debe tener todos los permisos para la base de datos. No necesita el permiso GRANT, pero es más fácil otorgarlos todos.

Aprender más acerca de permisos de base de datos antes de cambiar los roles de seguridad dentro de su base de datos.

Para volver a importar sus datos, inicie sesión en el servidor MySQL con el mysql mando. Escribe usar [nombre de la base de datos] en el indicador y sustituya el nombre de la base de datos. Ingresar fuente [nombre de archivo]y sustituya el nombre del archivo de volcado que tomó anteriormente.

Cuando haya terminado, aparecerá una lista de mensajes que notan que las sentencias SQL se están ejecutando. Esté atento a los errores, pero si tiene los permisos adecuados, debería estar bien.

Importar un archivo mysqldump a una nueva base de datos

Cuando se complete el proceso, tendrá un duplicado de la base de datos original. Para verificar la similitud entre las bases de datos, realice otro volcado y luego compare las dos salidas. Utilice un editor de texto o una herramienta de diferenciación dedicada para comparar los dos archivos.

Comparación de los archivos de volcado de las dos bases de datos

Hay dos diferencias entre estos archivos, representados por líneas rojas en la parte superior e inferior de la barra de desplazamiento derecha. La primera es la línea que contiene el nombre de la base de datos, y es diferente porque los archivos se nombraron de manera diferente. El segundo es la marca de tiempo del archivo de volcado. Esto es diferente porque la segunda base de datos se volvió a crear después de la primera. De lo contrario, los archivos son exactamente iguales, lo que significa que las bases de datos que los generaron también lo son.

Preguntas más frecuentes

  • ¿Cómo se corrige el error de mysqldump: acceso denegado al usar tablas de bloqueo?

    Pídale al administrador de su base de datos que le otorgue el privilegio LOCK. Si esto no resuelve el problema, intente ejecutar el mismo comando mysqldump agregando el - transacción única bandera, como [$ mysqldump- transacción única] [-uusuario] [-pagDBNAME ] > backup.sql.

  • ¿Puedes usar una cláusula "where" con mysqldump?

    Utilice una cláusula WHERE al crear una copia de seguridad que solo incluya las filas que cumplen la condición dada. Por ejemplo, para volcar datos solo de filas con la columna id mayor que 100, ingrese "mysqldump my_db_name my_table_name --where =" id> 100 "> my_backup.sql".