Problem
Tyvärr är det många nya Laravel-utvecklare som inte förstår detta förrän de sätter sin kod i produktion och något händer så att de förlorar sina data.
Laravel erbjuder inte säkerhetskopiering av databaser som en del av deras kärnfunktionalitet så nya Laravel-utvecklare får inte arbeta med det när de läser Laravel-artiklar eller bygger en Laravel-applikation.
Idag blir det en allt viktigare sak att lagra och bevara dina reservdata om du skulle behöva använda den.
Vanliga misstag som nya Laravel-utvecklare gör är att gå till phpmyadmin och försöka köra exporten manuellt. Även om detta fortfarande kommer att fungera är det inte den bästa metoden, för ibland kommer du inte att vara där för att säkerhetskopiera och dina användare genererade redan nya data.
Vad du vill göra är att automatisera det.
Lösning
Det finns många sätt du kan göra för att säkerhetskopiera din databas, men hur många människor gör är att använda detta paket https: // github.com / spatie / laravel-backup . Företaget bakom det är mycket pålitligt och känt i branschen.
Först och främst är paketet GRATIS, så du behöver inte betala någonting.
På plussidan är installationen ganska enkel och det som jag gillar särskilt är att det inte bara gör din databasbackup, du har också möjlighet att säkerhetskopiera dina filer och sedan lagra allt detta i en zip-fil. När jag säger filer menar jag lagringsfiler, till exempel dokumentöverföringar eller filer som du genererar med din applikation.
Dessutom kan du också flytta det till AWS S3, vilket är en smart sak att göra. Allt du behöver göra är (förutsatt att du redan har ett AWS-konto, är att gå och skapa en ny S3-hink med nya behörigheter. Sedan kan du bara följa dokumentationen på deras Github-sida.
Här är en snabb förhandsgranskning av konfigurationsfilen som du kan justera så att du får aviseringar via andra medier som Slack och Email.
'aviseringar' => ['aviseringar' => [
\ Spatie \ Backup \ Notifieringar \ Meddelanden \ BackupHasFailed :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Meddelanden \ Meddelanden \ UnhealthyBackupWasFound :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifieringar \ Meddelanden \ CleanupHasFailed :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifieringar \ Meddelanden \ BackupWasSuccessful :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifieringar \ Meddelanden \ HealthyBackupWasFound :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifieringar \ Meddelanden \ CleanupWasSuccessful :: class => ['mail', 'slack'],
],
/ *
* Här kan du ange det anmälningspliktiga meddelandet ska skickas till. Standarden
* notifiable kommer att använda variablerna som anges i denna konfigurationsfil.
* /
'notifiable' => \ Spatie \ Backup \ Notifications \ Notifiable :: class,
'mail' => [
'till' => ['editor @ linuxhint.com '],
],
'slack' => [
'webhook_url' => 'https: // krokar.slak.com / tjänster / ABMGGK7AB / B9PBCDSM8 / kam02gzLrycaUBctgAdRv52M ',
/ *
* Om detta är inställt på null kommer webhookens standardkanal att användas.
* /
'channel' => null,
],
],
Ställ in automatisering
Slutligen skulle allt detta inte vara mycket meningsfullt om du bestämde dig för att hoppa över automatiseringsdelen. För detta vill du förlita dig på cron-jobb som redan ska vara aktiverade på din värd och pekare till Laravel schema-kommandot så här:
* * * * * cd / sökväg till ditt projekt && php hantverksschema: kör >> / dev / null 2> & 1Härifrån i din app / konsol / kärna.php-fil bör du göra följande om du vill automatisera den vid en viss tidpunkt (jag brukar göra det när de flesta av våra användare sover):
if (app ('env') == 'produktion')$ schema-> kommando ('backup: clean') -> daglig () -> vid ('01: 00 ');
$ schema-> kommando ('backup: run') -> daily () -> at ('02: 00 ');