Problem
Dessverre er det mange nye Laravel-utviklere som ikke innser dette før de setter koden sin i produksjon, og noe skjer slik at de mister dataene sine.
Laravel tilbyr ikke databasesikkerhetskopiering som en del av kjernefunksjonaliteten, slik at nye Laravel-utviklere ikke kommer til å jobbe med det mens de leser Laravel-artikler eller bygger et Laravel-program.
I dag blir det en stadig viktigere ting å lagre og bevare sikkerhetskopidataene dine i tilfelle du noen gang trenger å bruke dem.
Vanlige feil nye Laravel-utviklere gjør er å gå til phpmyadmin og prøve å kjøre denne eksporten manuelt. Selv om dette fremdeles fungerer, er det ikke den beste fremgangsmåten, for noen ganger vil du ikke være der for å ta sikkerhetskopi, og brukerne dine genererte allerede nye data.
Det du vil gjøre er å automatisere det.
Løsning
Det er mange måter du kan gjøre for å sikkerhetskopiere databasen din, men hvor mange mennesker gjør er å bruke denne pakken https: // github.com / spatie / laravel-backup . Selskapet bak er veldig pålitelig og kjent i bransjen.
For det første er pakken GRATIS, så du trenger ikke å betale noe.
På plussiden er installasjonen ganske enkel, og det jeg liker spesielt er at det ikke bare gjør databasesikkerhetskopien din, du har også muligheten til å sikkerhetskopiere filene dine og deretter lagre alt dette i en zip-fil. Når jeg sier filer, mener jeg lagringsfiler, for eksempel dokumentopplastinger eller filer du genererer med applikasjonen din.
I tillegg kan du også flytte det til AWS S3, som er en smart ting å gjøre. Alt du trenger å gjøre er (forutsatt at du allerede har en AWS-konto, er å gå og lage en ny S3-bøtte med nye tillatelser. Så kan du bare følge dokumentasjonen på Github-siden deres.
Her er en rask forhåndsvisning av konfigurasjonsfilen som du kan tilpasse, slik at du mottar varsler gjennom andre medier som Slack og Email.
'notifications' => ['notifications' => [
\ Spatie \ Backup \ Notifications \ Notifications \ BackupHasFailed :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ UnhealthyBackupWasFound :: 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'],
],
/ *
* Her kan du spesifisere det meldepliktig meldingen skal sendes til. Standaren
* notifiable vil bruke variablene som er spesifisert i denne konfigurasjonsfilen.
* /
'notifiable' => \ Spatie \ Backup \ Notifications \ Notifiable :: class,
'mail' => [
'til' => ['editor @ linuxhint.com '],
],
'slack' => [
'webhook_url' => 'https: // kroker.slapp.no / tjenester / ABMGGK7AB / B9PBCDSM8 / kam02gzLrycaUBctgAdRv52M ',
/ *
* Hvis dette er satt til null, brukes standardkanalen til webhooken.
* /
'kanal' => null,
],
],
Sett opp automatisering
Til slutt ville ikke alt dette være fornuftig hvis du bestemte deg for å hoppe over automatiseringsdelen. For dette vil du stole på cron-jobber som allerede skal være aktivert på verten din og peke på Laravel-tidsplankommandoen slik:
* * * * * cd / path-to-your-project && php artisan tidsplan: kjør >> / dev / null 2> & 1Herfra, i appen / konsollen / kjernen.php-fil, bør du gjøre følgende hvis du vil automatisere den til en bestemt tid (jeg pleier å gjøre dette når de fleste av brukerne våre sover):
hvis (app ('env') == 'produksjon')$ sched-> command ('backup: clean') -> daily () -> at ('01: 00 ');
$ sched-> kommando ('backup: run') -> daglig () -> kl ('02: 00 ');