¿Qué es mysqldump y cómo lo uso?

Tabla de contenido:

¿Qué es mysqldump y cómo lo uso?
¿Qué es mysqldump y cómo lo uso?
Anonim

Como una de las principales bases de datos disponibles gratuitamente, 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, es posible que se encuentre en una situación en la que necesite migrar una base de datos de un servidor a otro.

¿Para qué se usa 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 instrucciones, cuando se ejecutan, reconstruyen la base de datos al estado preciso en el que se encontraba cuando se ejecutó el volcado.

Use 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 documentos de MySQL enumeran otros métodos para hacer copias de seguridad, pero 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 ser complicado cuando se mueve 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 escribir o incluir en un trabajo por lotes.

Instalar la herramienta mysqldump

Para Windows, 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). Los usuarios de sistemas Linux basados en Ubuntu pueden utilizar el siguiente comando para instalar el cliente y las utilidades de MySQL:

sudo apt install cliente mysql

Extraer un volcado de MySQL

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

mysqldump -h [nombre o IP de su servidor de base de datos] -u [nombre de usuario de la base de datos] -p [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 esto en blanco si ejecuta el comando en el mismo host que el servidor MySQL.
  • - u: Su nombre de usuario.
  • - p: 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 copia de seguridad. Pero cuando se le solicite, no debería, porque si alguien obtuvo 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 mencionado. Si este archivo no existe, se crea automáticamente.

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

Image
Image

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 instrucciones y vuelve a generar 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 a todos.

Obtenga más información sobre los permisos de la 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 comando mysql. Escriba use [nombre de la base de datos] en el indicador y sustituya el nombre de la base de datos. Introduzca fuente [nombre de archivo] y sustituya el nombre del archivo de volcado que tomó anteriormente.

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

Image
Image

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 diferencias dedicada para comparar los dos archivos.

Image
Image

Hay dos diferencias entre estos archivos, representadas 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 esta es diferente porque los archivos tenían nombres diferentes. El segundo es la marca de tiempo del archivo de volcado. Esto es diferente porque la segunda base de datos se recreó 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 Frecuentes

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

    Pídale al administrador de su base de datos que le conceda el privilegio LOCK. Si esto no resuelve el problema, intente ejecutar el mismo comando mysqldump agregando el indicador - -single-transaction, como [ $ mysqldump --single-transaction] [-u usuario] [-p NOMBREBD] > backup.sql

    ¿Puede usar una cláusula "dónde" 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".

Recomendado: