Su consultor TI

Conozca su infraestructura, mejore lo que necesite

Como evitar errores al volcar bases de datos MySql en alojamientos compartidos

Si habéis trabajado con servidores compartidos para el alojamiento (hosting) de páginas web que requiriesen trabajar com MySql, tenéis muchos puntos para haber sufrido algún problema con las base de datos a la hora de hacer copias de seguridad, restaurar datos o hacer volcados de algunas tablas.

Siempre me refiero a hacer esto fuera de las utilidades que pueda ofrecer el operador de turno como pueda ser Dinahosting, 1&1 o Strato, lo que es tanto conveniente, como a veces necesario.

En mi caso, la primera vez que se me presentó un problema serio fue al intentar instalar Moodle en mi alojamiento compartido de forma manual, dado que no existía la posibilidad de que se desplegara de forma automática con un asistente de los que suelen ofrecer las empresas que dan este servicio.

Todo iba bien, el alojamiento aparentemente reunía todas las características técnicas necesarias e incluso el proceso comenzaba correctamente, pero al poco se bloqueaba.

Al revisar la base de datos, podía ver claramente que al poco de comenzar, el proceso de creación de tablas se había parado.

La causa de esto es, casi siempre, que en este tipo de servicios compartidos, el proveedor impone serias restricciones en cuanto a la memoria y el tiempo máximo de ejecución que un script PHP puede estar funcionando (normalmente 30 segundos y 256MBytes).

En mi caso, la instalación de Moodle podía tardar hasta media hora, es un CMS muy denso y, evidentemente, el script de instalación se cortaba al poco de comenzar. Aunque conseguí aumentar el tiempo de ejecución de los scripts al llamar al servicio de atención al cliente, no era posible que se instalara, por lo que tomé la decisión a la que siempre recurro en estos casos, e instalé Moodle en mi propia máquina virtual sin restricciones, para luego subir por FTP todos la instalación ya generada y volcar la base de datos ya creada.

El problema vino al intentar migrar la base de datos al servicio compartido. Yo tenía que pasar un volcado de más de 15Mbytes generado con la opción de exportar de MySqlAdmin, pero al hacer la importación el proceso volvía a pararse por culpa del timeout de PHP, auqnue la troceara en bloques de 2MBytes.

MySqlDumper

Investigando, con gran alegría descubrí MySqlDumper, un script para MySql que es gloria bendita para muchas cosas. Con el se puede, entre otras:

  • Realizar y restaurar copias de seguridad.
  • Comprimir los datos de las copias.
  • Mantener un histórico de todas las copias o solo un número de ellas.
  • Programar las copias de forma automática.
  • Enviar notificaciones por correo con o sin la copia anexa.
  • Trocear los ficheros generados.
  • Enviar las copias por FTP de forma automática.

Y probablemente muchas más cosas, pero lo grandioso de ello y por lo que me parece maravilloso, es que es inmune a los tiempos máximos de ejecución o timeouts de PHP.

De hecho, lo que hace al principio es detectar el tiempo máximo de ejecución y cada vez que va a llegar al tiempo límite, para y se recarga para volver a inicializar dicho tiempo. Funciona de lujo, no me ha fallado ni una vez y he volcado así bases de datos de casi un gigabyte (hechado muchas horas, eso sí).

La instalación es bien sencilla, lo subís por FTP a una carpeta de vuestro alojaminto y lo llamáis desde el navegador con la URL que mejor os venga, tiene su propio index.php. Yo en mi caso lo instalo en cada proyecto y le dedico un subdominio de forma directa para evitar que la URL para acceder a él sea complicada o conocida.

Por lo demás, ya veréis que es más que sencillo de usar. Os pongo unas capturas de proyectos míos para que veáis la pinta.

copia de seguridad con mysqldumperEn esta primera captura podéis ver el resultado de hacer una copia de seguridad usando compresión, pero el siguiente es mucho más interesante desde mi punto de vista.

resultado restauración con mysqldumper

Aquí es donde viene lo interesante, pues es lo que tardó en volcar la base de datos completa que subí por FTP, 23 minutos en total, recargándose 74 veces. Un éxito.

Las copias de seguridad, tanto las que él hace como las que podéis subir para restaurar se colocan en esta carpeta que os indico a continuación. fichero de copia de seguridad con mysqldumper

Precaución importante

Todo es muy bonito, pero si os fijais, no teneis que autenticaros para acceder a este script.

Dejado tal cual, sería un agujero de seguridad tan grande como un túnel de metro, por lo que lo más idóneo es que activeis la seguridad de directorios que ofrezca vuestro servidor para que cuando accedais al script os pida autenticación.

También podeis poner un .htaccess para limitar desde donde su pueda acceder, pero yo prefiero con diferencia el primer método.

Deja un comentario

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


*

Su consultor TI © 2014 Frontier Theme