Laravel hvordan du tar sikkerhetskopi av en database

Laravel hvordan du tar sikkerhetskopi av en database

Problem

Dessverre er det ikke mange nye Laravel -utviklere.

Laravel tilbyr ikke en database -sikkerhetskopi som en del av deres kjernefunksjonalitet, så nye Laravel -utviklere ikke får jobbe med det mens de leser Laravel -artikler eller bygger en Laravel -applikasjon.

I dag blir det en stadig viktigere ting å lagre og bevare sikkerhetskopieringsdataene 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 fortsatt vil fungere, er det ikke den beste praksisen fordi du noen ganger ikke vil være der for å ta sikkerhetskopien, 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 å ta sikkerhetskopi av 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.

Først av alt er pakken gratis, slik at du ikke trenger å betale noe.

På plussiden er installasjonen ganske enkel, og det jeg liker spesielt er at den ikke bare gjør databasen sikkerhetskopi, du har også et alternativ å sikkerhetskopiere filene dine og deretter lagre alt dette i en ZIP -fil. Når jeg sier filer, mener jeg lagringsfiler, for eksempel opplasting av dokumentet 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 opprette en ny S3 -bøtte med nye tillatelser. Da kan du bare følge dokumentasjonen på GitHub -siden deres.

Her er en rask forhåndsvisning av konfigurasjonsfilen som du kan finjustere, slik at du mottar varsler gjennom andre medier som slakk og e -post.

'Varsler' => [
'Varsler' => [
\ Spatie \ backup \ varsler \ varsler \ backuphasfailed :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Varsler \ Varsler \ UNIDHYYBACKUPWASFOUND :: Class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Varsler \ Varsler \ CleanuphasFailed :: Class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Varsler \ Varsler \ BackupWassuccessful :: Class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Varsler \ Varsler \ HealthyBackUpWasfound :: Class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Varsler \ Varsler \ CleanupWassuccessful :: Class => ['Mail', 'Slack'],
],
/*
* Her kan du spesifisere de varslerbare som varslene skal sendes. Standaren
* MERKNADIBEL.
*/
'Meldbar' => \ Spatie \ Backup \ Varsler \ Meldbar :: Klasse,
'Mail' => [
'til' => ['redaktø[email protected] '],
],
'slakk' => [
'webhook_url' => 'https: // kroker.slakk.com/tjenester/ABMGGK7AB/B9PBCDSM8/KAM02GZLRYCAUBCTGADRV52M ',
/*
* Hvis dette er satt til å null, vil standardkanalen til webhooken bli brukt.
*/
'kanal' => null,
],
],

Sett opp automatisering

Endelig ville ikke alt dette gi mye mening hvis du bestemte deg for å hoppe over automatiseringsdelen. For dette vil du stole på Cron -jobber som allerede bør være aktivert på verten din og peker til Laravel -plan -kommandoen slik:

* * * * * CD /Path-to-Your-Project && PHP Artisan Plan: Kjør >> /Dev /Null 2> & 1

Herfra, i appen din/konsollen/kjernen.PHP -fil Du bør gjøre følgende hvis du vil automatisere den på et bestemt tidspunkt (jeg gjør dette vanligvis når de fleste av brukerne våre sover):

if (app ('env') == 'produksjon')
$ plan-> Kommando ('sikkerhetskopi: ren')-> Daily ()-> AT ('01: 00 ');
$ plan-> kommando ('backup: run')-> Daily ()-> AT ('02: 00 ');