Cómo hacer un backup de MySQL desde PHP

Una forma de hacer un backup de MySQL es usando la instruccion mysqldump. Esta instrucción permite volcar el contenido de la base de datos en formato SQL en un archivo.

Para ejecutar esta función desde PHP, se usa system(), que permite ejecutar instrucciones en linea de comandos en el servidor (siempre que se cuente con los permisos).

$backupFile = “backup” . date(”Y_m_d”) . ‘.sql’;
$command = “mysqldump –opt -h “.$dbhost.” -u “.$dbuser.” –password=”.$dbpass.” “.$dbname.” > “.$backupFile;
system($command , $return);

Existen muchas opciones para mysqldump, pero –opt es la que generalmente se usa para hacer un backup rapidamente.

Se deberán definir anteriormente los datos de conexión: $dbhost, $dbuser, $dbpass, $dbname. Si $return es 0, entonces no hubo ningún error y el backup fue creado correctamente. En cambio, si el valor de $return es 2, hubo, probablemente, un error en los datos de conexión a la base de datos.

Para importar un archivo SQL a la base de datos, se utiliza el comando a la inversa (no se hace un dump de la información y el signo > cambia por < indicando el sentido en el que se copia la información):

$backupFile = $HTTP_POST_FILES['backup']['tmp_name'];
$command = “mysql -h “.$dbhost.” -u “.$dbuser.” –password=”.$dbpass.” “.$dbname.” < “.$backupFile;
system($command , $return);

Donde, en este caso, $backupFile es enviado por método POST desde un formulario.