Problem
Niestety, wielu nowych programistów Laravela nie zdaje sobie z tego sprawy, dopóki nie wprowadzą swojego kodu do produkcji i dzieje się coś, co powoduje utratę danych.
Laravel nie oferuje kopii zapasowej bazy danych w ramach swojej podstawowej funkcjonalności, więc nowi programiści Laravela nie mogą z tym pracować podczas czytania artykułów o Laravelu lub budowania aplikacji Laravel.
Obecnie coraz ważniejsze staje się przechowywanie i zabezpieczanie danych kopii zapasowych na wypadek, gdyby zaszła potrzeba ich użycia.
Częstymi błędami, które popełniają nowi programiści Laravela, jest przejście do phpmyadmina i próba ręcznego uruchomienia tego eksportu. Chociaż to nadal będzie działać, nie jest to najlepsza praktyka, ponieważ czasami nie będzie Cię tam, aby wykonać kopię zapasową, a Twoi użytkownicy wygenerowali już nowe dane.
Chcesz to zautomatyzować.
Rozwiązanie
Istnieje wiele sposobów na wykonanie kopii zapasowej bazy danych, ale ile osób korzysta z tego pakietu https://github.com/spatie/laravel-backup . Stojąca za nim firma jest bardzo rzetelna i znana w branży.
Przede wszystkim pakiet jest BEZPŁATNY, więc nie musisz nic płacić.
Plusem jest to, że instalacja jest dość prosta, a szczególnie podoba mi się to, że nie tylko tworzy kopię zapasową bazy danych, ale masz również opcję tworzenia kopii zapasowych plików, a następnie przechowywania tego wszystkiego w pliku zip. Kiedy mówię o plikach, mam na myśli pliki do przechowywania, takie jak przesłane dokumenty lub pliki, które generujesz za pomocą aplikacji your.
Ponadto możesz również przenieść to do AWS S3, co jest mądrym posunięciem. Wszystko, co musisz zrobić, to (zakładając, że masz już konto AWS, iść i utworzyć nowy zasobnik S3 z nowymi uprawnieniami. Następnie możesz po prostu postępować zgodnie z dokumentacją na ich stronie Github.
Oto szybki podgląd pliku konfiguracyjnego, który możesz dostosować, aby otrzymywać powiadomienia za pośrednictwem innych mediów, takich jak Slack i Email.
'powiadomienia' => ['powiadomienia' => [
\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 => ['poczta', 'slack'],
],
/*
* Tutaj możesz określić, do kogo mają być wysyłane powiadomienia. Domyślny
* notiable użyje zmiennych określonych w tym pliku konfiguracyjnym.
*/
'notifiable' => \Spatie\Backup\Notifications\Notifiable::class,
'poczta' => [
'do' => ['[email protected]'],
],
'luz' => [
'webhook_url' => 'https://hooks.luźny.com/services/ABMGGK7AB/B9PBCDSM8/kam02gzLrycaUBctgAdRv52M',
/*
* Jeśli ta opcja jest ustawiona na null, zostanie użyty domyślny kanał webhooka.
*/
'kanał' => null,
],
],
Skonfiguruj automatyzację
Wreszcie, wszystko to nie miałoby większego sensu, gdybyś zdecydował się pominąć część dotyczącą automatyzacji. W tym celu chcesz polegać na zadaniach cron, które powinny być już włączone na twoim hoście i wskazywać polecenie harmonogramu Laravel w ten sposób:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1Stąd, w Twojej aplikacji/Konsoli/Jądrze.plik php powinieneś wykonać następujące czynności, jeśli chcesz zautomatyzować go w określonym czasie (zwykle robię to, gdy większość naszych użytkowników śpi):
if (app('env') == 'produkcja')$schedule->command('backup:clean')->codziennie()->at('01:00');
$schedule->command('backup:run')->codziennie()->at('02:00');