Laravel come eseguire il backup di un database

Laravel come eseguire il backup di un database

Problema

Sfortunatamente, molti nuovi sviluppatori di Laravel non se ne accorgono fino a quando non hanno messo il loro codice in produzione, e succede qualcosa in modo che perdano i loro dati.

Laravel non offre un backup del database come parte della loro funzionalità principale, quindi i nuovi sviluppatori di Laravel non si mettono a lavorare con quello mentre leggi gli articoli di Laravel o costruiscono un'applicazione Laravel.

Oggi diventa una cosa sempre più importante archiviare e preservare i tuoi dati di backup nel caso in cui tu abbia mai bisogno di usarli.

Errori comuni che i nuovi sviluppatori di Laravel fanno è andare a PhpMyadmin e provare a eseguire questa esportazione manualmente. Anche se questo funzionerà ancora, non è la migliore pratica perché a volte non sarai lì per effettuare il backup e i tuoi utenti hanno già generato nuovi dati.

Quello che vuoi fare è automatizzarlo.

Soluzione

Esistono molti modi in cui puoi fare per eseguire il backup del tuo database, ma quante persone fanno è usare questo pacchetto https: // github.com/spatie/laravel-backup . La società dietro di essa è molto affidabile e conosciuta nel settore.

Prima di tutto, il pacchetto è gratuito, quindi non devi pagare nulla.

Tra i lati positivi, l'installazione è abbastanza semplice e ciò che mi piace in particolare è che non solo il backup del database, ma hai anche un'opzione di eseguire il backup dei file e quindi memorizzare tutto ciò in un file zip. Quando dico file, intendo file di archiviazione, come i caricamenti del documento o i file che generano con la tua applicazione.

Inoltre, puoi anche spostarlo su AWS S3 che è una cosa intelligente da fare. Tutto quello che devi fare è (supponendo che tu abbia già un account AWS, è andare a creare un nuovo secchio S3 con nuove autorizzazioni. Quindi puoi semplicemente seguire la documentazione sulla loro pagina GitHub.

Ecco una rapida anteprima del file di configurazione che puoi modificare in modo da ricevere notifiche tramite altri mezzi come Slack ed Email.

'Notifiche' => [
'Notifiche' => [
\ Spatie \ Backup \ Notifications \ Notification \ BackuphasFailed :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifiche \ Notification \ malshitybackupwasfound :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifiche \ Notifiche \ CleanuphasFailed :: Class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifiche \ Notification \ BackupWassuccessful :: class => ['Mail', 'Slack',
\ Spatie \ Backup \ Notifiche \ Notification \ HealthyBackupWasfound :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Notifiche \ Notifiche \ CleanUpWassuccessful :: Class => ['Mail', 'Slack',
",
/*
* Qui è possibile specificare la notifica a cui dovrebbero essere inviate le notifiche. Il predefinito
* Notificable utilizzerà le variabili specificate in questo file di configurazione.
*/
'Notificable' => \ Spatie \ Backup \ Notifications \ Notificable :: Class,
'Mail' => [
'to' => ['[email protected] '],
",
'slack' => [
'webhook_url' => 'https: // hooks.lento.com/servizi/abmggk7ab/b9pbcdsm8/kam02gzlrycaubctgadrv52m ',
/*
* Se questo è impostato su NULL, verrà utilizzato il canale predefinito del webhook.
*/
'canale' => null,
",
",

Impostare l'automazione

Infine, tutto ciò non avrebbe molto senso se decidessi di saltare la parte di automazione. Per questo, vuoi fare affidamento su lavori cron che dovrebbero già essere abilitati sul tuo host e puntatore al comando di programma Laravel come questo:

* * * * * CD /Path-to-your-project && PHP Artisan Schedule: Run >> /Dev /Null 2> & 1

Da qui, nella tua app/console/kernel.File PHP Dovresti fare quanto segue se si desidera automatizzarlo in un determinato momento (di solito lo faccio quando la maggior parte dei nostri utenti dorme):

if (app ('env') == 'produzione')
$ programma-> comando ('backup: pulit')-> quotidian ()-> at ('01: 00 ');
$ programma-> comando ('backup: run')-> quotidian ()-> at ('02: 00 ');