Antes de hacer el backup para migrar la base de datos, si el tamaño de la misma es muy grande (varios Gigas) se pueden eliminar algunos datos. Dependerá del cliente si desea o no conservarlos, aunque se puede hacer un borrado por fechas, por ejemplo, los anteriores a X años anteriores.

Algunas tablas que podemos eliminar información son:

delete from consultasreports;
delete from colaenvionotificaciones where FechaProcesado is not null;
delete from historiconotificaciones;
delete from logins;

Una vez vaciado espacio innecesario podremos bajarnos un backup de la misma.

Hay que tener en cuenta que dependiendo del programa que utilizemos para hacer el backup, quizá nos deje comentarios o sentencias SQL con referencia al usuario o la base de datos original. Si la nueva base de datos o su usuario tiene otro nombre, habrá que editar el backup generado para modificar dichas referencias. Por ejemplo, si hemos generado el backup con phpMyAdmin con el usuario usuarioA, puede que nos deje algo parecido en el archivo sql generado:

CREATE ALGORITHM=UNDEFINED DEFINER=usuarioA@localhost

Por tanto, si el usuario de la base de datos es distinto a usuarioA, por ejemplo es usuarioB, deberemos editar estas sqls para renombrarlo a:

CREATE ALGORITHM=UNDEFINED DEFINER=usuarioB@localhost

SOBRE EL TAMAÑO DEL BACKUP:

Si el archivo sql generado es muy grande podemos utilizar el comando split en una consola linux para dividir el archivo en varios más pequeños:

split -d -b 25M mibackup.sql (este comando nos divide el archivo mibackup.sql en varios archivos de 25 Megas cada uno (-b 25M) y nos enumera con un número en su extensión generada (-d) ). IMPORTANTE: La división la hace justo por el tañamo de bytes indicados (Megas en este caso), lo que nos cortará las SQL finales e iniciales de cada archivo. Antes de ejecutar cada archivo deberemos desplazarnos al final de cada archivo y recomponer las sql con el principio del siguiente archivo generado.

O mejor podemos utilizar el siguiente comando: split -d -C 4000KB mibackup.sql . Este comando los generará archivos de un máximo de 4Mb pero sin cortar ninguna linea, aunque deberemos de comprobar igualmente la integridad de las SQL finales e iniciales de cada archivo generado.

Tened en cuenta que hay una variable de configuración de MySQL que limita el tamaño de bytes del buffer de cada comunicación. Por tanto, si los archivos los dividimos en 25Mb pero la variable max_allowed_packet=20M, no podremos subirlo a menos que aumentemos el valor de dicha variable, o bien reduzcamos el tamaño de los sql a ejectutar.

SOBRE PERMISOS NECESARIOS:

Hay que tener en cuenta que para restaurar el backup de la base de datos de horizoon necesitaremos permisos para ejecutar TRIGGERS i PROCEDURES. El usuario con el que conectemos a la base de datos para restaurar el backup debe tener dichos privilegios, además de los privilegios SUPER.

Algunos servidores no admiten que configuremos permisos SUPER, como es el caso de Amazon. En este caso podemos cambiar la variable de MySQL log_bin_trust_function_creators=1 (enabled) para que omita el privilegio SUPER y nos permita ejecutar TRIGGERS i PROCEDURES siempre que el usuario tenga dichos permisos.

También necesitaremos que nuestro usuario tenga el permiso para crear VIEWS.