Laravel como fazer backup de um banco de dados

Laravel como fazer backup de um banco de dados

Problema

Infelizmente, muitos novos desenvolvedores de Laravel não percebem isso até colocarem seu código em produção, e algo acontece para que eles perdam seus dados.

O Laravel não oferece um backup de banco de dados como parte de sua funcionalidade principal, para que novos desenvolvedores de Laravel não trabalhem com isso enquanto lê artigos de Laravel ou construindo um aplicativo Laravel.

Hoje, torna -se uma coisa cada vez mais importante armazenar e preservar seus dados de backup, caso você precise usá -los.

Erros comuns novos desenvolvedores de Laravel são ir para Phpmyadmin e tentar executar esta exportação manualmente. Embora isso ainda funcione, não é a melhor prática, porque às vezes você não estará lá para fazer o backup, e seus usuários já geraram novos dados.

O que você quer fazer é automatizar isso.

Solução

Há muitas maneiras de fazer backup do seu banco de dados, mas quantas pessoas fazem é usar este pacote https: // github.com/spatie/laravelp-backup . A empresa por trás disso é muito confiável e conhecida na indústria.

Primeiro de tudo, o pacote é gratuito, então você não precisa pagar nada.

No lado positivo, a instalação é bastante simples e o que eu gosto em particular é que ele não apenas faz o backup do seu banco de dados, você também tem a opção de fazer backup de seus arquivos e depois armazenar tudo isso em um arquivo zip. Quando digo arquivos, quero dizer arquivos de armazenamento, como os uploads ou arquivos de documentos que você gera com seu aplicativo.

Além. Tudo o que você precisa fazer é (supondo que você já tenha uma conta da AWS, é criar um novo balde S3 com novas permissões. Então você pode apenas seguir a documentação em sua página do Github.

Aqui está uma visualização rápida do arquivo de configuração que você pode ajustar para que você receba notificações através de outros meios, como Slack e E -mail.

'Notificações' => [
'Notificações' => [
\ Spatie \ backup \ notificações \ notificações \ backuphasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ backup \ notificações \ notificações \ não saudáveis ​​de backupwasfound :: class => ['Mail', 'Slack'],
\ Spatie \ backup \ notificações \ notificações \ cleanuphasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ backup \ notificações \ notificações \ backupWassuccessful :: class => ['Mail', 'Slack'],
\ Spatie \ backup \ notificações \ notificações \ HealthybackupWasfound :: class => ['Mail', 'Slack'],
\ Spatie \ backup \ notifications \ notificações \ cleanupWassuccessful :: class => ['Mail', 'Slack'],
],
/*
* Aqui você pode especificar a notificável para a qual as notificações devem ser enviadas. O padrão
* O notificável usará as variáveis ​​especificadas neste arquivo de configuração.
*/
'notificável' => \ spatie \ backup \ notifications \ notifable :: Class,
'Mail' => [
'para' => ['[email protected] '],
],
'Slack' => [
'webhook_url' => 'https: // ganchos.folga.com/Services/abmggk7ab/b9pbcdsm8/kam02gzlrycaubctgadrv52m ',
/*
* Se isso estiver definido como NULL, o canal padrão do webhook será usado.
*/
'canal' => nulo,
],
],

Configure a automação

Finalmente, tudo isso não faria muito sentido se você decidisse pular a parte da automação. Para isso, você deseja confiar em trabalhos de Cron que já deveriam ser ativados em seu host e ponteiro para o comando do cronograma do Laravel como este:

* * * * * CD /Path-to-Your-Project && PHP Artisan Cronograma: Run >> /dev /null 2> & 1

A partir daqui, em seu aplicativo/console/kernel.Arquivo PHP Você deve fazer o seguinte se quiser automatizá -lo em um determinado momento (geralmente faço isso quando a maioria de nossos usuários está dormindo):

if (app ('Env') == 'Production')
$ cronograma-> command ('backup: limpo')-> Daily ()-> em ('01: 00 ');
$ cronograma-> command ('backup: run')-> Daily ()-> em ('02: 00 ');