Importar bases de datos MySQL de gran tamaño cuando superan los límites de phpMyAdmin

Frecuentemente se tienen dificultades para importar bases de datos MySQL que tengan gran tamaño dentro del proceso de administración de una página web, y resulta muy típíco en la administración de sitios o blogs meidante WordPress. Puede suceder que en algún momento haya que mover las bases de datos de un servidor a otro (p.e. en caso de migración de una página web) y que el nuevo imponga un límite en el tamaño máximo del archivo permitido para la BD. En estos casos, si se intenta cargar bases de datos por encima del límite máximo mediante phpMyAdmin recibiremos un mensaje de error por exceso tras el intento de importación.

Cada servidor de alojamiento permite un tamaño máximo de las bases de datos MySQL que se pueden importar. Desde la opción Importar de phpMyAdmin se puede conocer este límite.

Para salvar esta dificultad hay diferentes herramientas que permiten restaurar de forma sencilla grandes bases de datos MySQL cuando no se puede realizar la importación mediante phpMyAdmin u otros medios debido a los límites impuestos por un servidor web respecto a su tamaño o al tiempo de ejecución. Se pueden diferenciar dos tipos:

  • Scripts que se ejecutan internamente desde el propio servidor donde se importa la BD.
  • Programas que dividen/trocean los archivos de BD en archivos más pequeños dentro de los límites de tamaño del servidor para su posterior importación vía phpMyAdmin.

BigDump

bigdumpSe trata de un script PHP que realiza un volcado escalonado en la importación de bases de datos MySQL, incluso en servidores web con límite de tiempo o en modo seguro. Funciona de forma que incialmente importa sólo una pequeña parte del volcado total y se reinicia. En la siguiente sesión comienza desde el punto donde se detuvo la anterior.

Utiliza un único archivo, bigdump.php, que se debe abrir con un editor de texto para establecer las configuraciones de acceso a tu servidor MySQL.

El funcionamiento es muy simple. Después de establecer las configuraciones en el archivo bigdump.php y de subirlo a una carpeta (con permisos de escritura) de tu servidor, sólo tienes que llamarlo desde un navegador web. Cuando finalice el proceso, debes eliminarlo de tu servidor.

Utilización

  1. Exportar la base de datos que queremos restaurar en formato .sql o comprimido .gz (Es conveniente que cuando se haga el volcado con phpMyAdmin se active la casilla de la opción “Añada DROP Table” del modo personalizado. Si no se hace, deberá asegurarse que la restauración se realiza sobre una base de datos vacía).
  2. Visitar el sitio web oficial de BigDump y descargar la última versión.
  3. Descomprimir el archivo descargado (bigdump.zip) y abrir el archivo bigdump.php con un editor de texto como Notepad++ para editar su configuración.
  4. Modificar algunas de las líneas para configurar el script con la información de la base de datos del servidor de destino:
    $db_server   = 'localhost';
    $db_name     = 'nombre_de_tu_DB';
    $db_username = 'nombre_del_usuario_DB';
    $db_password = 'contraseña_usuario_DB';
    * En la mayoría de los casos no será necesario modificar ‘localhost’.
    No es necesario configurar el nombre de la BD exportada del servidor de origen y que se quiere restaurar (permitidos archivos  *.sql  y  *.gz). En la página que aparece tras ejecutarse el script se mostrarán las BD disponibles y se da la opción de seleccionar cuál de ellas utilizar.
    Ajustar, si fuera necesario, el tipo de codificación de la BD (por defecto es utf8):
    $db_connection_charset = 'utf8';
    Establecer los siguientes parámetros:
    $linespersession    = 3000;
    $delaypersession    = 300;
    Modificar ‘$linespersession‘ si se produce un error debido a que el servidor de destino no soporte ejecutar tantas consultas SQL. Si esto sucede, se edita para reducir el número establecido por otro mas bajo.
  5. Guardar los cambios y subir el archivo bigdump.php modificado y la base de datos SQL (*.sql o *.gz) al directorio raíz del sitio en el nuevo servidor mediante un cliente FTP, cPanel o cualquier otra herramienta para ello. (Nota del autor: cuidar de subir en modo TEXT los archvos bigdump.php y  *.sql, pero hacerlo en modo BINARY para *.gz si la subida se hace desde MS Windows)
  6. Ejecutar el archivo bigdump.php desde el navegador vía URL de la siguiente forma:
    http://www.tu_dominio/bigdump.php.
  7. Hacer clic en ‘Start Import‘ (iniciar importación).

    Esparar a que el script termine y mientras no cerrar la ventana del navegador. Si todo va bien se debería mostrar una ventana como esta.

Algunas observaciones:
– BigDump en ocasiones restaura mejor las bases de datos *.sql, por lo que si se obtiene un error con una BD *.sql.gz debe intentarse también con el archivo en formato descomprimido.
– No siempre se tiene éxito: dependerá de las condiciones y calidad del servidor. Puede que la base de datos no se importe en el primer intento. Hacer varios vaciando en cada ocasión previamente el contenido de la BD de destino antes de descartar este procedimiento.
– IMPORTANTE: Por razones de seguridad, cuando el script se ha ejecutado correctamente, se debe eliminar bigdump.php y el archivo de BD subidos previamente en la raíz del servidor.
– En la página oficial se pueden consulatar unas notas avanzadas sobre uso y funcionamiento.

Hay otros programas que trabajan como scripts dentro de los servidores (p.e. MySQLDumper) pero, en general, si ha fallado BigDump estos otros tampoco tendrán éxito.

 

Trocear la BD e importar desde phpMyAdmin

Existen diversos programas en Windows que dividen los archivos de bases de datos SQL de gran tamaño en varios de un tamaño dentro de los límites de importación del servidor, manteniendo intacta la integridad SQL. No es la solución más eficiente pero funciona siempre: divide y vencerás.

SQLDumpSplitter

SQLDumpSplitter permite dividir archivos SQL en varios parciales que tengan un tamaño inferior al límite establecido por el servidor. Dispone de opción que permite eliminar las líneas de comentarios con lo que se consigue reducir el tamaño total de la BD.

Posteriormente se importan todos los archivos en su orden a través de phpMyAdmin empezando por el denominado *.DataStructure.sql que contiene la estructura de tablas. Después se importan los otros ficheros *.sql que contienen los datos y registros que completan la estructuctura de tablas creada previamente.

SQL-Splitter

Sql-Splitter es un programa que divide archivos SQL de gran tamaño en varios trozos y los almacena. El tamaño de las porciones se puede elegir libremente, lo que determinará el número de archivos parciales resultante. Los nuevos archivos se almacenan de forma numerada y correlativa en el ordenador. Dispone de opción para suprimir automáticamente las líneas de comentarios y en blanco.

A continuación se importarán los archivos resultantes a la nueva BD mediante phpMyAdmin.

File Splitter 1

Otra alternativa para dividir archivos SQL y luego subir uno a uno todos los trozos es el programa File Splitter 1. Es un programa muy simple pero muy efectivo. Cuando se ejecuta solicita identificar el archivo SQL, luego pregunta el número de partes en que se dividirá. Lo divide en esas partes y, finalmente, las partes resultantes se deben importar al servidor a través de phpMyAdmin.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *