Backup de tablas específicas con mysqldump de MySQL | Guía

1. Introducción

MySQL es un sistema de gestión de bases de datos que se utiliza en muchos sitios web y aplicaciones. Entre ellos, el comando «mysqldump» es una herramienta muy importante al realizar copias de seguridad o migraciones de bases de datos. En particular, cuando se desea respaldar solo tablas específicas dentro una base de datos grande, este comando resulta muy útil. En este artículo, explicaremos en detalle cómo obtener un volcado especificando tablas concretas con el comando mysqldump. Será fácil de entender incluso para principiantes, y también presentaremos opciones para usuarios intermedios y usos avanzados.

2. Sintaxis básica del comando mysqldump

Primero, revisaremos el uso básico del comando mysqldump. Este comando se utiliza para volcar (hacer una copia de seguridad) la estructura y los datos de una base de datos completa o de tablas específicas.

Sintaxis básica

Especificando el nombre de usuario, la contraseña, el nombre de la base de datos y el nombre de la tabla como se muestra a continuación, hacer una copia de seguridad de una tabla específica.
mysqldump -u nombre_de_la_base_de_datos nombre_de_la_tabla > archivo_de_salida.sql
  • -u:Especifica el nombre de usuario para acceder a la base de datos
  • -p:Es la contraseña (se mostrará un prompt al ingresar)
  • nombre_de_la_base_de_datos:Nombre de la base de datos de la cual se obtendrá el volcado
  • nombre_de_la_tabla:Nombre de la tabla específica de la cual se obtendrá el volcado
  • > archivo_de_salida.sql:Especifica el archivo de salida

Opciones frecuentemente usadas

  • --single-transaction:En tablas InnoDB, realiza la copia de seguridad manteniendo la consistencia de la transacción
  • --skip-lock-tables:Opción para evitar el bloqueo de tablas durante la de seguridad

3. Cómo volcar tablas específicas

Especificar una tabla única

Para respaldar solo una tabla específica indique el nombre de la tabla después del nombre de la base de datos. En el siguiente ejemplo, solo se volcará la tabla users.
mysqldump -u root -p my_database users > users_dump.sql
Este comando guarda la estructura y los datos de la tabla users de la base de datos my_database en users_dump.sql.

Especificar varias tablas

Para respaldar varias tablas a la vez, indique los nombres de las tablas separados por espacios.
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
En el ejemplo anterior, las tres tablas users, orders y products se vuelcan simultáneamente.

Volcado usando una lista de tablas

Cuando se necesita volcar una gran cantidad de tablas, especificar manualmente todos los nombres de tabla es engorroso. En esos casos, es posible generar automáticamente la lista de tablas a volcar usando el comando SHOW TABLES o scripts>
mysql -u root -p my_database -N -e "SHOW TABLES LIKE 'hoge%'" > table_list.txt
mysqldump -u root -p my_database `cat table_list.txt` > partial_dump.sql
Con este método, solo se pueden respaldar de forma eficiente las tablas que coincidan con el patrón especificado.

4. Opciones y usos avanzados

mysqldump ofrece diversas opciones, lo que permite obtener copias de seguridad flexibles según sus necesidades. Aquí se presentan algunas opciones para situaciones específicas.

Volcado solo de la estructura

Si no necesita los datos y solo desea respaldar la estructura de la tabla, use la opción --no-data.
mysqldump -u root -p my_database --no-data users > users_structure.sql
Con este comando, solo se volcará la estructura de la tabla users y no se incluirán los datos.

Volcado solo de los datos

Por el contrario, si solo desea obtener los datos de la tabla, use la opción --no-create-info.
mysqldump -u root -p my_database --no-create-info users > users_data.sql
Con este comando, la estructura de la tabla no se incluye y solo se volcarán los datos.

Volcado de datos basado en condiciones específicas

Al usar la opción --where, es posible volcar solo los datos que cumplan una condición específica. Por ejemplo, para volcar solo los datos con id mayor que 100, se especifica lo siguiente.
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
De este modo, puede extraer y respaldar solo los datos necesarios de una base de datos grande.

5. Ejemplo de uso real

Caso de uso 1: Copia de seguridad de una sola tabla

Por ejemplo, si desea respaldar solo la tabla salary dentro de la base de datos employees, haga lo siguiente.
mysqldump -u root -p employees salary > salary_dump.sql

Caso de uso 2: Copia de seguridad de datos con condición

Para volcar solo un rango específico de datos, use la opción --where. Por ejemplo, una copia de seguridad de los datos de la tabla users donde el id es mayor que 100.
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql

6. Puntos a considerar y mejores prácticas

Problemas de bloqueo de tablas

Al usar mysqldump, es posible que las tablas se bloqueen y otras operaciones no puedan ejecutarse. En particular, en sistemas en funcionamiento, se recomienda usar la opción --single-transaction para evitar este problema. Además, con tablas InnoDB, también es seguro combinar la opción --skip-lock-tables.

Cómo manejar grandes volúmenes de datos

Cuando la cantidad de datos de la base de datos es muy grande, el proceso de volcado puede tardar mucho tiempo. También es posible usar gzip para comprimir en tiempo real mientras se realiza el volcado.
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
Este comando comprime los datos al mismo tiempo que se realiza el volcado, ahorrando espacio en disco.

7. Conclusión

En este artículo explicamos cómo usar el comando mysqldump para volcar una tabla específica. Desde el uso básico del comando hasta volcados condicionales, volcados solo de estructura o datos, e incluso la automatización eficiente mediante scripts, cubrimos una amplia gama de posibilidades. mysqldump es una herramienta muy poderosa y, si se usa correctamente, permite realizar copias de seguridad y migraciones de datos de manera fluida. En la próxima entrega profundizaremos en opciones más avanzadas de mysqldump y en comparaciones con otras herramientas de respaldo.