18. Crear Respaldo de MySQL desde PHP
Requisitos:
- Servidor Web, PHP y MySQL.
- Librería ZipArchive, en PHP 5.2.0 en adelante esta librería ya viene incluida y activada.
- Mas información de mysqldump. Ver
Para verificar que tenemos la librería ZipArchive y esta activado creamos en script para mostrar toda la información de PHP:
<?php phpinfo(); ?>
Mostrara la información que necesitamos.
Versión de PHP:
Librería ZipArchive:
Al verificar que tenemos todo lo necesario creamos el script para hacer los respaldos:
<?php $db_host = 'localhost'; //Host del Servidor MySQL $db_name = 'basededatos'; //Nombre de la Base de datos $db_user = 'usuario'; //Usuario de MySQL $db_pass = 'password'; //Password de Usuario MySQL $fecha = date("Ymd-His"); //Obtenemos la fecha y hora para identificar el respaldo // Construimos el nombre de archivo SQL Ejemplo: mibase_20170101-081120.sql $salida_sql = $db_name.'_'.$fecha.'.sql'; //Comando para genera respaldo de MySQL, enviamos las variales de conexion y el destino $dump = "mysqldump --h$db_host -u$db_user -p$db_pass --opt $db_name > $salida_sql"; system($dump, $output); //Ejecutamos el comando para respaldo $zip = new ZipArchive(); //Objeto de Libreria ZipArchive //Construimos el nombre del archivo ZIP Ejemplo: mibase_20160101-081120.zip $salida_zip = $db_name.'_'.$fecha.'.zip'; if($zip->open($salida_zip,ZIPARCHIVE::CREATE)===true) { //Creamos y abrimos el archivo ZIP $zip->addFile($salida_sql); //Agregamos el archivo SQL a ZIP $zip->close(); //Cerramos el ZIP unlink($salida_sql); //Eliminamos el archivo temporal SQL header ("Location: $salida_zip"); // Redireccionamos para descargar el Arcivo ZIP } else { echo 'Error'; //Enviamos el mensaje de error } ?>
Y el script genera un respaldo de la base de datos en ZIP y lo descarga:
Nota: Si trabajas el script en linux recuerda asignar los permisos de escritura y ejecución para que pueda generar el respaldo.