Usualmente se tienen problemas para importar bases de datos MySQL que tengan gran tamaño dentro del proceso de administración de una página web. Tal vez en algún momento haya que mover las bases de datos de un servidor a otro (en el caso de migración de una página web por ejemplo) y que el nuevo hosting imponga un límite en el tamaño máximo del archivo permitido para la BD. Es en estos casos, cuando se intenta cargar bases de datos por encima del límite máximo que permite phpMyAdmin para archivos .sql, gzip o bzip indistintamente, tras el intento de importación, recibiremos un mensaje de error transcurrido un tiempo prudencial del intento de importación de datos, lo que sin duda dificulta seriamente el proceso de migración o restauración cuando el archivo .sql a restaurar tienen un tamaño superior al impuesto, por ejemplo 140 Mb. 

Tamaño máximo phpMyAdmin

Para solucionar estos inconvenientes existen diferentes herramientas que permiten restaurar de forma sencilla grandes bases de datos MySQL cuando no se puede realizar la importación mediante phpMyAdmin. Se suelen diferenciar dos tipos: Scripts que se ejecutan desde el propio servidor donde se importa la BD y programas que dividen/particionan los archivos de BD en archivos más pequeños que estén dentro de los límites de tamaño del servidor para su importación vía phpMyAdmin. Aquí les dejo dos de cada tipo:


LightDump: Importador

Es un script PHP que realiza importación de bases de datos MySQL, incluso en servidores web con límite de tiempo de ejecución o que están en modo seguro (safe mode) habilitado.

Hubo un código inicial, del 2003, el cual pasó por diversos cambios hasta el 2009, yo realicé algunas modificaciones y lo actualicé para que pueda trabajar y sea compatible hoy en día. Es sencillo de usar y no requiere ningún conocimiento de codificación. Todo lo que necesita son los datos de la conexión de la base de datos.

Exportar en formato .sql la base de datos que queremos importar (cuando haga la exportación por phpMyAdmin, en método de exportación personalizado active la casilla de la opción “Añada DROP Table”, si no asegurarse que la restauración se realiza sobre una base de datos vacía).

Descargar el archivo lightdump_importer.php (LightDump), aquí es necesario agregar los datos de su base de datos en el archivo y sus datos de autenticación (cualquiera que recuerden). La base de datos donde va importar, no debe contener tablas en él, debe estar vacía.

$db_server   = 'localhost';
$db_name     = 'nombre_de_tu_DB';
$db_username = 'nombre_de_usuario_DB';
$db_password = 'contraseña_de_usuario_DB';

$filename = 'nombre_archivo_DB';

$auth_user = 'nombre_de_usuario_de_autenticación';
$auth_password = 'contraseña_de_autenticación';

Después de configurar el archivo lightdump_importer.php, crear un directorio en la raíz de su sitio web, por ejemplo, www.misitioweb.com/tmp/. La copia de seguridad de su base de datos y el archivo lightdump_importer.php deben ser subidos aquí.

Ahora sólo tiene que ejecutar la secuencia de comandos en el lugar que se ha cargado, desde su navegador llamar al script para su ejecución: www.misitioweb.com/tmp/lightdump_importer.php. Aparecerá una ventanita de autenticación (el modelo depende del navegador que esté usando) en donde tendrá que ingresar sus datos que ingresó anteriormente en los campos 'nombre_de_usuario_de_autenticación' y 'contraseña_de_autenticación'.

Autenticación
Autenticación

Cuando se lanza el script, no se obtiene el resultado de inmediato en la ventana del navegador hasta que la importación finaliza. Esto significa que con una base de datos sin comprimir de 1000 Mb (1 Gb), por ejemplo, el resultado tardará en aparecer unos tres minutos aproximadamente, dependiendo de la velocidad del servidor. No cerrar ni hacer nada con esa ventana del navegador, hasta que el script concluya y muestre el resultado.

Cada vez que se lanza el script, se borra la estructura de la base de datos y se restituye el contenido del dump. El script procesa consulta por consulta, lo que significa que da igual el tamaño de la base de datos a restaurar.

Una vez concluido el trabajo del script, en la ventana del navegador se obtendrá un resultado similar a este:

LightDump: Importador

Nota: Por razones de seguridad, una vez finalizado el proceso eliminar el script lightdump_importer.php y el archivo .sql cargado a su servidor.

Descargar el archivo script PHP.


BigDump: Importador volcado escalonada MySQL

Es un script PHP que realiza un cargado escalonado en la importación de bases de datos MySQL, incluso en servidores web con límite de tiempo de ejecución o que están en modo seguro (safe mode) habilitado. Funciona de forma que inicialmente importa sólo una pequeña parte del cargado total y se reinicia, en la siguiente sesión comienza desde el punto donde se detuvo la anterior.

Es sencillo de usar y no requiere ningún conocimiento de codificación. Todo lo que necesita son los datos de la conexión de la base de datos.

Exportar en formato .sql la base de datos que queremos importar (cuando haga la exportación por phpMyAdmin, en método de exportación personalizado active la casilla de la opción “Añada DROP Table”, si no asegurarse que la restauración se realiza sobre una base de datos vacía).

Descargar el archivo bigdump.php (BigDump), aquí es necesario agregar los datos de su base de datos en el archivo. La base de datos donde va importar, no debe contener tablas en él, debe estar vacía.

$db_server   = 'localhost';
$db_name     = 'nombre_de_tu_DB';
$db_username = 'nombre_de_usuario_DB';
$db_password = 'contraseña_de_usuario_DB';

$filename = 'nombre_archivo_DB.sql';

Después de configurar el archivo bigdump.php, crear un directorio en la raíz de su sitio web, por ejemplo, www.misitioweb.com/dump/. La copia de seguridad de su base de datos y el archivo bigdump.php deben ser subidos aquí.

Ahora sólo tiene que ejecutar la secuencia de comandos en el lugar que se ha cargado, desde su navegador llamar al script para su ejecución: www.misitioweb.com/dump/bigdump.php.

Para comenzar la importación hacer clic en "Iniciar importación" (Start Import).

BigDump: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin

En caso de que el archivo .sql a importar incluya sentencias "CREATE DATABASE" se producirán errores como este:

BigDump: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin

Lo solucionamos editando el archivo .sql, aquí eliminar la siguiente entrada (normalmente se encuentra al principio del archivo):

CREATE DATABASE `archivo_sql` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `archivo_sql`;

BigDump: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin

También se pueden presentar errores que indica que está intentando importar demasiadas líneas de volcado. Este es un problema común que es causada por tratar de cargar una base de datos que tiene demasiados largos (es decir, Insertar líneas largas).

Una forma de resolver esto es descargar de nuevo su antigua base de datos sin ningún tipo de insertos largos. En las versiones anteriores de phpMyAdmin, hay una opción en la pestaña de exportación para incluir o excluir insertos largos. En las nuevas versiones de phpMyAdmin, es necesario asegurarse que está marcada la opción que "incluyen los nombres de columnas en cada sentencia INSERT".

Incluir nombres de columna en toda sentencia INSERT

Asegurarse que la base de datos nueva esta vacía. Tras volver a iniciar la importación se muestra una tabla donde se ve el progreso de la importación de datos, esperar a que el script termine y no cerrar la ventana del navegador.

BigDump: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin

Si todo va bien y la operación ha sido correcta, finalizada la importación, nos mostrará una leyenda de "color verde" informando del resultado satisfactorio:

BigDump: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin

Nota: Por razones de seguridad, una vez finalizado el proceso eliminar el script bigdump.php y el archivo .sql cargado a su servidor. En la página del desarrollador pueden consultar las notas avanzadas sobre su uso y funcionamiento.

Descargar el archivo script PHP.


SQLDumpSplitter 2

Este programa permite establecer el tamaño máximo de archivo (Set maximum filesize) y divide la BD .sql en varias partes que tengan un tamaño inferior al límite establecido por phpMyAdmin para posteriormente cargarlos por separado. Dispone de una opción para eliminar las líneas de comentarios (Skip comment-lines) con lo que consigue reducir el tamaño total de la BD.

Todos los archivos se importan por su número de orden a través de phpMyAdmin, empezando por el _DataStructure.sql que es el que contiene la estructura de las tablas, posteriormente el resto de archivos .sql que contienen los datos y registros que completan la estructura de las tablas creadas previamente.

En la página de descarga ir donde dice "So here we go: SQLDumpSplitter.zip".

SQLDumpSplitter: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin


SQL-Splitter

Este programa también divide las BD .sql de gran tamaño en varias partes y los almacena. Se puede elegir libremente el tamaño de las partes, lo que determina el número de archivos resultantes. Los nuevos archivos se guardan de forma numerada y correlativa en el ordenador.

Dispone de la opción para retirar las líneas de comentarios (Remove comment lines) y las líneas en blanco (Remove blank lines). Luego mediante phpMyAdmin importar los archivos resultantes a la nueva BD.

Descargar programa.

SQL-Splitter: Importar bases de datos MySQL mayores de 50 Mb, cuando superan los límites de phpMyAdmin


Jorge Andres Amaya

Jorge Andres Amaya

Licenciado en Economía y maestría en Administración, con amplio dominio de diversas herramientas digitales y prompts.