Laravel comment sauvegarder une base de données

Laravel comment sauvegarder une base de données

Problème

Malheureusement, de nombreux nouveaux développeurs de Laravel ne s'en rendent pas compte avant qu'ils ne mettent leur code en production, et quelque chose se passe afin qu'ils perdent leurs données.

Laravel n'offre pas de sauvegarde de la base de données dans le cadre de leurs fonctionnalités de base afin que les nouveaux développeurs de Laravel ne travaillent pas avec cela lors de la lecture d'articles de Laravel ou de la création d'une application Laravel.

Aujourd'hui, il devient une chose de plus en plus importante à stocker et à préserver vos données de sauvegarde au cas où vous auriez besoin de l'utiliser.

Erreurs courantes que les nouveaux développeurs de Laravel font est d'aller à PhpmyAdmin et d'essayer d'exécuter cette exportation manuellement. Bien que cela fonctionnera toujours, ce n'est pas la meilleure pratique car parfois vous ne serez pas là pour faire la sauvegarde, et vos utilisateurs ont déjà généré de nouvelles données.

Ce que vous voulez faire, c'est automatiser cela.

Solution

Il existe de nombreuses façons que vous pouvez faire pour sauvegarder votre base de données, mais combien de personnes utilisent ce package https: // github.com / spatie / laravel-backup . L'entreprise derrière elle est très fiable et connue dans l'industrie.

Tout d'abord, le colis est gratuit, donc vous n'avez rien à payer.

Du côté positif, l'installation est assez simple et ce que j'aime en particulier, c'est qu'il non seulement votre sauvegarde de la base de données, vous avez également la possibilité de sauvegarder vos fichiers, puis de stocker tout cela dans un fichier zip. Quand je dis des fichiers, je veux dire des fichiers de stockage, tels que les téléchargements de documents ou les fichiers que vous génèrez avec votre application.

De plus, vous pouvez également déplacer cela vers AWS S3, ce qui est une chose intelligente à faire. Tout ce que vous avez à faire est (en supposant que vous avez déjà un compte AWS, c'est d'aller créer un nouveau seau S3 avec de nouvelles autorisations. Ensuite, vous pouvez simplement suivre la documentation sur leur page GitHub.

Voici un aperçu rapide du fichier de configuration que vous pouvez modifier afin de recevoir des notifications via d'autres supports tels que Slack et Email.

'Notifications' => [
'Notifications' => [
\ Spatie \ backup \ notifications \ notifications \ backupHasfailed :: class => ['mail', 'slack'],
\ Spatie \ backup \ notifications \ notifications \ malalthybackupwasfound :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ CleanupHasfailed :: class => ['Mail', 'Slack'],
\ Spatie \ backup \ notifications \ notifications \ backupwassucesful :: class => ['mail', 'slack'],
\ Spatie \ backup \ notifications \ notifications \ healthbackupwasfound :: class => ['mail', 'slack'],
\ Spatie \ backup \ notifications \ notifications \ CleanUpWassuceSful :: class => ['mail', 'slack'],
]],
/ *
* Ici, vous pouvez spécifier la notifiable à laquelle les notifications doivent être envoyées. Le défaut
* Notifiable utilisera les variables spécifiées dans ce fichier de configuration.
* /
'notifiable' => \ spatie \ backup \ notifications \ notifiable :: class,
'mail' => [
'to' => ['éditeur @ linuxhint.com '],
]],
'Slack' => [
'webhook_url' => 'https: // hooks.mou.com / services / abmggk7ab / b9pbcdsm8 / kam02gzlrycaubctgadrv52m ',
/ *
* Si cela est défini sur NULL, le canal par défaut du webhook sera utilisé.
* /
'canal' => null,
]],
]],

Configurer l'automatisation

Enfin, tout cela n'aurait pas beaucoup de sens si vous décidiez de sauter la partie d'automatisation. Pour cela, vous souhaitez compter sur des travaux CRON qui devraient déjà être activés sur votre hôte et pointeur vers la commande Laravel Schedule comme ceci:

* * * * * CD / path-to-your-project && php Artisan Schedule: Exécuter >> / dev / null 2> & 1

De là, dans votre application / console / noyau.Fichier PHP Vous devez effectuer ce qui suit si vous souhaitez l'automatiser à un moment donné (je le fais généralement lorsque la plupart de nos utilisateurs sont endormis):

if (app ('env') == 'Production')
$ calendrier-> Commande ('Backup: Clean') -> Daily () -> at ('01: 00 ');
$ calendrier-> Commande ('Backup: Run') -> Daily () -> AT ('02: 00 ');