Saltar al contenido →

Cómo importar una enorme base de datos y monitorear el avance en Linux

En algún momento me he encontrado con el problema de importar bases de datos demasiado grandes, hablo de cientos de gigas.

Una forma sencilla para importar estas enormes bases de datos es importándolas comprimidas. Lo puedes hacer de varias maneras, pero una que me parece bastante clara para MySQL es así


$ gzip -dc < basededatos.sql.gz | mysql -u usuario -p NombreBaseDeDatos

El único problema de hacerlo de esta manera es que desconoces el progreso de la importación y cuando hablamos de bases de datos de cientos de gigas, puedes pasar horas sin saber en qué porcentaje va el progreso de la importación.
Este problema se resuelve fácil usando el comando pv o Pipe Viewer. Este comando no viene por omisión en las distribuciones de Linux, pero en distribuciones basadas en Debian o Fedora puedes encontrarlo en los manejadores de paquetes apt o yum fácilmente.

Ahora para hacer la importación y monitorear el progreso cambia un poco respecto a cómo lo mostré arriba, usando el commando pv se hace de la siguiente manera


$ pv basededatos.sql.gz | gunzip | mysql -u usuario NombreBaseDeDatos
2MiB 0:00:20 [2.69MiB/s] [=======>                                         ] 10% ETA 0:02:52

Listo!, con esto uno ya se puede ir a hacer algo de cenar, ver Netflix y luego regresar para ver cómo va el progreso.

Por último pero no menos importante, esto también funciona si quieres importar una base de datos PostgreSQL.

Publicado en Linux SQL