Databases 5 min de lectura 13 de abril de 2026

Cómo dividir dumps grandes de MySQL con mysqldumpsplitter

Una guía práctica para clonar, configurar y usar el script mysqldumpsplitter para extraer bases de datos o tablas de dumps pesados de MySQL.

Solución en "Dos Clics" (TL;DR)

Guía práctica para clonar, configurar y usar el script bash mysqldumpsplitter para extraer bases de datos o tablas de dumps pesados.

En mi día a día con la gestión de bases de datos MySQL, a menudo me encuentro con la necesidad de manipular archivos de dump que pueden ser extremadamente grandes. Extraer una base de datos específica o incluso una sola tabla de un archivo de dump de varios gigabytes puede ser un desafío. Recientemente, descubrí una herramienta muy útil que simplifica enormemente esta tarea: el script mysqldumpsplitter.sh de Kedar VJ. Aquí detallo el proceso que seguí para ponerlo en marcha y utilizarlo.

1. El Desafío de los Dumps Grandes y la Solución

Trabajar con archivos .sql generados por mysqldump que contienen múltiples bases de datos o una gran cantidad de tablas puede ser ineficiente. Intentar importar todo el archivo para luego extraer lo necesario no es práctico. La solución ideal es poder dividir estos dumps antes de la importación. El script mysqldumpsplitter.sh está diseñado precisamente para esto, permitiéndome extraer partes específicas sin tener que procesar el archivo completo.

2. Descargando y Preparando mysqldumpsplitter

El primer paso fue obtener el script. Al ser un repositorio de GitHub, la forma más directa es clonarlo. Abrí mi terminal y ejecuté los siguientes comandos:

Terminal (Bash)
git clone https://github.com/kedarvj/mysqldumpsplitter.git
cd mysqldumpsplitter

Alternativamente, se podría descargar el repositorio como un archivo ZIP y descomprimirlo manualmente. Una vez dentro del directorio clonado, identifiqué el archivo principal: mysqldumpsplitter.sh.

Para poder ejecutar el script, es fundamental otorgarle permisos de ejecución. Sin este paso, el sistema operativo denegaría el intento de ejecutarlo. El comando para hacerlo es:

Terminal (Bash)
chmod +x mysqldumpsplitter.sh

3. Fundamentos de Uso del Script

La estructura básica para ejecutar mysqldumpsplitter.sh es bastante sencilla. Siempre se especifica el archivo de dump de origen y luego se añaden las opciones para definir qué se desea extraer.

Terminal (Bash)
./mysqldumpsplitter.sh --source archivo.sql [opciones]

Los parámetros clave que utilicé fueron:

  • --source: Especifica la ruta al archivo de dump de MySQL que quiero procesar.
  • --extract: Define el tipo de extracción (base de datos, tabla, todas las tablas, etc.).
  • --match_str: Proporciona el nombre específico de la base de datos o tabla a extraer, o una expresión regular.

4. Ejemplos Prácticos de Extracción

A continuación, detallo los escenarios más comunes y los comandos que utilicé para cada uno.

Extrayendo una Base de Datos Específica

Si mi archivo dump.sql contenía varias bases de datos y solo necesitaba una llamada mibasedatos, el comando fue:

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql --extract DB --match_str mibasedatos

Extrayendo una Tabla Individual

Para extraer una tabla específica, por ejemplo, la tabla usuarios de un dump, el comando es similar, cambiando el valor de --extract a TABLE:

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql --extract TABLE --match_str usuarios

Dividiendo el Dump en Tablas Individuales

Una funcionalidad muy útil es la capacidad de dividir un dump completo en archivos separados, uno por cada tabla. Esto es ideal cuando necesito trabajar con la estructura o los datos de múltiples tablas de forma independiente.

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql --extract ALLTABLES

Extracción Avanzada con Expresiones Regulares

Para escenarios donde necesito extraer varias tablas cuyos nombres siguen un patrón o simplemente quiero seleccionar un grupo específico, --extract REGEXP es muy potente. Por ejemplo, para extraer las tablas users y orders:

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql --extract REGEXP --match_str "(users|orders)"

Manejo de Dumps Comprimidos (GZIP)

Frecuentemente, los dumps grandes se almacenan comprimidos para ahorrar espacio, generalmente en formato GZIP (.gz). El script mysqldumpsplitter.sh puede trabajar directamente con estos archivos sin necesidad de descomprimirlos previamente, lo cual es una gran ventaja. Solo tuve que añadir el parámetro --decompression gzip.

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql.gz --extract DB --match_str mibd --decompression gzip

5. Gestión de la Salida: Ubicación y Compresión

Por defecto, el script crea una carpeta llamada out/ en el directorio actual y guarda allí todos los archivos de salida, a menudo comprimidos en formato .sql.gz. Esto es conveniente, pero a veces necesito un control más preciso sobre dónde se guardan los archivos y si deben estar comprimidos o no.

Para especificar un directorio de salida diferente, utilicé --output_dir:

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql --extract DB --match_str mibasedatos --output_dir /ruta/destino

Si quería que los archivos de salida no estuvieran comprimidos, añadí --compression none:

Terminal (Bash)
./mysqldumpsplitter.sh --source dump.sql --extract DB --match_str mibasedatos --compression none

6. Resolviendo Errores Comunes

Durante mis primeras pruebas, me encontré con algunos errores típicos que son fáciles de corregir:

Error detectado: Si recibes un mensaje como “no such file or directory”, lo más probable es que no estés ejecutando el script desde el directorio correcto o la ruta al archivo .sql sea incorrecta. Asegúrate de que tanto el script como el dump estén accesibles desde tu ubicación actual en la terminal, o proporciona rutas absolutas.
Error detectado: El mensaje “permission denied” casi siempre indica que olvidaste darle permisos de ejecución al script. La solución es ejecutar chmod +x mysqldumpsplitter.sh.
Error detectado: Si el sistema te dice “command not found” al intentar ejecutar mysqldumpsplitter.sh, es porque no está en tu PATH. Para ejecutar scripts en el directorio actual, siempre debes prefijarlos con ./, es decir, ./mysqldumpsplitter.sh.
La historia detrás de la nota

Este script ha sido un verdadero salvavidas para manejar dumps de MySQL que antes me parecían inmanejables. Es un claro ejemplo de cómo una herramienta sencilla de línea de comandos puede resolver un problema complejo de manera elegante y eficiente. ¡Definitivamente lo tendré en mi arsenal para futuros proyectos!