Laravel Cómo hacer una copia de seguridad de una base de datos

Laravel Cómo hacer una copia de seguridad de una base de datos

Problema

Desafortunadamente, muchos desarrolladores nuevos de Laravel no se dan cuenta hasta que ponen su código en la producción, y algo sucede, por lo que pierden sus datos.

Laravel no ofrece una copia de seguridad de la base de datos como parte de su funcionalidad central para que los nuevos desarrolladores de Laravel no trabajen con eso mientras leen artículos de Laravel o construyen una aplicación de Laravel.

Hoy, se convierte en algo cada vez más importante almacenar y preservar sus datos de copia de seguridad en caso de que alguna vez necesite usarlos.

Errores comunes que hacen los nuevos desarrolladores de Laravel es ir a PhPMyadmin e intentar ejecutar esta exportación manualmente. Si bien esto seguirá funcionando, no es la mejor práctica porque a veces no estará allí para hacer la copia de seguridad, y sus usuarios ya generaron nuevos datos.

Lo que quieres hacer es automatizar eso.

Solución

Hay muchas maneras de hacer para hacer una copia de seguridad de su base de datos, pero cuántas personas hacen es usar este paquete https: // github.com/spatie/laravel-backup . La empresa detrás de ella es muy confiable y conocida en la industria.

En primer lugar, el paquete es gratis, por lo que no tiene que pagar nada.

En el lado positivo, la instalación es bastante simple y lo que me gusta en particular es que no solo lo hace la copia de seguridad de su base de datos, sino que también tiene la opción de hacer una copia de seguridad de sus archivos y luego almacenar todo eso en un archivo zip. Cuando digo archivos, me refiero a archivos de almacenamiento, como las cargas del documento o los archivos que genera con su aplicación.

Además, también puede mover eso a AWS S3, que es algo inteligente para hacer. Todo lo que necesita hacer es (suponiendo que ya tenga una cuenta de AWS, es ir y crear un nuevo cubo S3 con nuevos permisos. Entonces puede seguir la documentación en su página de GitHub.

Aquí hay una vista previa rápida del archivo de configuración que puede ajustar para que reciba notificaciones a través de otros medios, como Slack y correo electrónico.

'notificaciones' => [
'notificaciones' => [
\ Spatie \ Backup \ Notifications \ Notifications \ Backuphasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ UnhalhyBackupWasfound :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ CleanUphasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ BackupWassuccessful :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ HealthyBackupWasfound :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ CleanUpWassuccessful :: class => ['Mail', 'Slack'],
],
/*
* Aquí puede especificar el notificable al que deben enviarse las notificaciones. El valor por defecto
* Notificable utilizará las variables especificadas en este archivo de configuración.
*/
'Notificable' => \ Spatie \ Backup \ Notifications \ Notifiable :: Clase,
'correo' => [
'a' => ['[email protected] '],
],
'Slack' => [
'webhook_url' => 'https: // ganchos.flojo.com/Services/ABMGGK7AB/B9PBCDSM8/KAM02GZLRYCAUBCTGADRV52M ',
/*
* Si esto se establece en NULL, se utilizará el canal predeterminado del webhook.
*/
'canal' => nulo,
],
],

Configurar la automatización

Finalmente, todo esto no tendría mucho sentido si decidieras omitir la parte de automatización. Para esto, desea confiar en trabajos cron que ya deberían estar habilitados en su anfitrión y puntero al comando Laravel Schedule como este:

* * * * * CD /Path-to-your-Project && Php Artisan Anchele: run >> /dev /null 2> & 1

Desde aquí, en su aplicación/consola/kernel.archivo php debe hacer lo siguiente si desea automatizarlo en un momento particular (generalmente hago esto cuando la mayoría de nuestros usuarios están dormidos):

if (app ('env') == 'Production')
$ programar-> comando ('Backup: Clean')-> Daily ()-> AT ('01: 00 ');
$ programar-> comando ('Backup: Run')-> Daily ()-> AT ('02: 00 ');