Laravel, wie man eine Datenbank sichern kann

Laravel, wie man eine Datenbank sichern kann

Problem

Leider merken viele neue Laravel -Entwickler dies erst, wenn sie ihren Code in die Produktion gesteckt haben, und etwas passiert, damit sie ihre Daten verlieren.

Laravel bietet keine Datenbanksicherung als Teil ihrer Kernfunktionalität, sodass neue Laravel -Entwickler nicht damit arbeiten können, während sie Laravel -Artikel lesen oder eine Laravel -Anwendung erstellen.

Heute wird es immer wichtiger, Ihre Sicherungsdaten zu speichern und zu bewahren, falls Sie sie jemals verwenden müssen.

Häufige Fehler Neue Laravel -Entwickler tun es, zu Phpmyadmin zu gehen und diesen Export manuell durchzuführen. Dies funktioniert zwar noch, aber es ist nicht die beste Praxis, da Sie manchmal nicht da sind, um die Sicherung zu erstellen, und Ihre Benutzer bereits neue Daten generiert haben.

Was Sie tun möchten, ist, dies zu automatisieren.

Lösung

Es gibt viele Möglichkeiten, wie Sie Ihre Datenbank sichern können, aber wie viele Personen verwenden dieses Paket https: // github.com/Spatie/Laravel-Backup . Das Unternehmen dahinter ist sehr zuverlässig und in der Branche bekannt.

Zuallererst ist das Paket kostenlos, also müssen Sie nichts bezahlen.

Auf der positiven Seite ist die Installation recht einfach und insbesondere, dass Sie nicht nur Ihre Datenbanksicherung erledigen, sondern auch die Möglichkeit haben, Ihre Dateien zu sichern und dann alles in einer ZIP -Datei zu speichern. Wenn ich Dateien sage, meine ich Speicherdateien wie das Dokument -Upload oder Dateien, die Sie mit Ihrer Anwendung generieren.

Darüber hinaus können Sie das auch in AWS S3 verschieben, was eine kluge Sache ist. Alles, was Sie tun müssen, ist (vorausgesetzt, Sie haben bereits ein AWS -Konto, müssen einen neuen S3 -Bucket mit neuen Berechtigungen erstellen. Dann können Sie einfach die Dokumentation auf ihrer Github -Seite befolgen.

Hier finden Sie eine kurze Vorschau der Konfigurationsdatei, die Sie optimieren können, damit Sie Benachrichtigungen über andere Medien wie Slack und E -Mail erhalten.

'Benachrichtigungen' => [
'Benachrichtigungen' => [
\ Spatie \ Backup \ Benachrichtigungen \ Benachrichtigungen \ BackuPhasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Benachrichtigungen \ Benachrichtigungen \ ungesundes \ ungesund,
\ Spatie \ Backup \ Benachrichtigungen \ Benachrichtigungen \ CleanuUphasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Benachrichtigungen \ Benachrichtigungen \ Backupwassuccessful :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Benachrichtigungen \ Benachrichtigungen \ HealthingBackupWasFound :: class => ['Mail', 'Slack'],
\ Spatie \ Backup \ Benachrichtigungen \ Benachrichtigungen \ CleanUpwassuccessful :: class => ['Mail', 'Slack'],
],
/*
* Hier können Sie die Benachrichtigung angeben, für die die Benachrichtigungen gesendet werden sollten. Der Standard
* Benachrichtigbar verwendet die in dieser Konfigurationsdatei angegebenen Variablen.
*/
'notifikable' => \ spatie \ backup \ Benachrichtigungen \ notifikable :: class,
'Mail' => [
'to' => ['[email protected] '],
],
'Slack' => [
'webhook_url' => 'https: // Hooks.locker.COM/DIENSTLEISTUNGEN/ABMGGK7AB/B9PBCDSM8/KAM02GZLRYCAUBCTGADRV52M ',
/*
* Wenn dies so eingestellt ist, dass der Standardkanal des Webhooks verwendet wird.
*/
'Kanal' => null,
],
],

Automatisierung einrichten

Schließlich würde all dies nicht viel Sinn machen, wenn Sie sich entschieden haben, den Automatisierungsteil zu überspringen. Dazu möchten Sie sich auf Cron -Jobs verlassen, die bereits auf Ihrem Host und Zeiger auf den Befehl Laravel -Zeitplan wie folgt aktiviert werden sollten:

* * * * * cd /path-to-your-project && php Artisan Zeitplan: Run >> /dev /null 2> & 1

Von hier aus in Ihrer App/Konsole/Ihrem Kernel.PHP -Datei Sie sollten Folgendes ausführen, wenn Sie sie zu einem bestimmten Zeitpunkt automatisieren möchten (ich mache dies normalerweise, wenn die meisten unserer Benutzer schlafen):

if (App ('env') == 'Produktion')
$ plan-> Befehl ('Backup: Clean')-> Daily ()-> at ('01: 00 ');
$ plan-> command ('backup: run')-> täglich ()-> at ('02: 00 ');