Laravel, jak wykonać kopię zapasową bazy danych

Laravel, jak wykonać kopię zapasową bazy danych

Problem

Niestety, wielu nowych programistów Laravel nie zdaje sobie z tego sprawy, dopóki nie umieścili swojego kodu w produkcji, a coś się dzieje, więc stracą swoje dane.

Laravel nie oferuje kopii zapasowej bazy danych w ramach ich podstawowej funkcjonalności, więc nowi programiści Laravel nie mogą z tym pracować podczas czytania artykułów Laravel lub budowania aplikacji Laravel.

Dziś przechowywanie i zachowanie danych tworzenia kopii zapasowych staje się coraz ważniejszą rzeczą.

Powszechnymi błędami, które robią nowi programiści Laravel, to przejść do phpMyAdmin i próba ręcznego uruchomienia tego eksportu. Chociaż nadal będzie to działać, nie jest to najlepsza praktyka, ponieważ czasami nie będziesz tam, aby dokonać kopii zapasowej, a użytkownicy już wygenerowali nowe dane.

To, co chcesz zrobić, to zautomatyzować.

Rozwiązanie

Istnieje wiele sposobów zrobienia, aby wykonać kopię zapasową bazy danych, ale liczba osób używa tego pakietu https: // github.com/spatie/laravel-backup . Firma jest bardzo niezawodna i znana w branży.

Przede wszystkim pakiet jest bezpłatny, więc nie musisz nic płacić.

Z drugiej strony instalacja jest dość prosta, a w szczególności podoba mi się to, że nie tylko wykonuje kopię zapasową bazy danych, ale także masz opcję tworzenia kopii zapasowych plików, a następnie przechowywania tego wszystkiego w pliku zip. Kiedy mówię pliki, mam na myśli pliki przechowywania, takie jak przesyłanie dokumentu lub pliki generowane w aplikacji.

Ponadto możesz to również przenieść do AWS S3, co jest inteligentną rzeczą do zrobienia. Wszystko, co musisz zrobić. Następnie możesz po prostu śledzić 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 E -mail.

„Powiadomienia” => [
„Powiadomienia” => [
\ Spatie \ Backup \ powiadomienia \ powiadomienia \ backuphasfailed :: class => [„poczta”, „slack”],
\ Spatie \ backup \ powiadomienia \ powiadomienia \ niezdrowebackUpwasfound :: class => [„poczta”, „slack”],
\ Spatie \ Backup \ powiadomienia \ powiadomienia \ CleanUphasFailed :: class => [„Mail”, „Slack”],
\ Spatie \ Backup \ powiadomienia \ powiadomienia \ BackupwasSuccessful :: class => [„poczta”, „Slack”],
\ Spatie \ backup \ powiadomienia \ powiadomienia \ HealthybackUpwasfound :: class => [„Mail”, „Slack”],
\ Spatie \ Backup \ powiadomienia \ powiadomienia \ CleanUpwasSuccessful :: class => [„poczta”, „Slack”],
],
/*
* Tutaj możesz określić powiadomienie, do którego należy wysłać powiadomienia. Domyślny
* Powiadomienie będzie używać zmiennych określonych w tym pliku konfiguracji.
*/
„Notifable” => \ spatie \ Backup \ powiadomienia \ powiadomili :: klasa,
„Mail” => [
„to '=> [' [email protected] '],
],
„Slack” => [
„WebHook_Url” => 'https: // hooks.luźny.COM/Services/Abmggk7ab/B9PBCDSM8/KAM02GZLRYCAUBCTGADRV52M ”,
/*
* Jeśli jest to ustawione na zerowe, zostanie użyty domyślny kanał haczyka Webhook.
*/
„kanał” => null,
],
],

Skonfiguruj automatyzację

Wreszcie, wszystko to nie miałoby większego sensu, gdybyś zdecydował się pominąć część automatyki. W tym celu chcesz polegać na zadaniach CRON, które powinny być już włączone na hosta i wskaźnika do polecenia harmonogramu laravel:

* * * * * CD /PATH-TO-YOUR-Project && Php Artisan Harmonogram: Run >> /dev /null 2> i 1

Stąd w Twojej aplikacji/konsoli/jądrze.Plik PHP powinieneś zrobić następujące informacje, jeśli chcesz go zautomatyzować w określonym czasie (zwykle robię to, gdy większość naszych użytkowników śpi):

if (app ('env') == 'produkcja')
$ harmonogram-> Command ('Backup: Clean')-> Daily ()-> at ('01: 00 ');
$ harmonogram-> command ('backup: run')-> codziennie ()-> at ('02: 00 ');