ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Laravel. Как сделать резервную копию базы данных

Как автоматически развертывать приложения Laravel с помощью Deployer на Ubuntu 16.04

Проблема

К сожалению, многие новые разработчики Laravel не осознают этого, пока не введут свой код в производство, и что-то происходит, поэтому они теряют свои данные.

Laravel не предлагает резервное копирование базы данных как часть своей основной функциональности, поэтому новые разработчики Laravel не могут работать с этим, читая статьи Laravel или создавая приложение Laravel.

Сегодня становится все более важным хранить и сохранять данные резервных копий на случай, если вам когда-нибудь понадобится их использовать.

Распространенные ошибки новых разработчиков Laravel — это перейти к phpmyadmin и попытаться запустить этот экспорт вручную. Хотя это по-прежнему будет работать, это не лучшая практика, потому что иногда вас не будет там, чтобы сделать резервную копию, а ваши пользователи уже создали новые данные.

Вы хотите автоматизировать это.

 

Решение

Есть много способов сделать резервную копию своей базы данных, но сколько людей используют этот пакет  https://github.com/spatie/laravel-backup  . Компания, стоящая за этим, очень надежна и известна в отрасли.

Во-первых, пакет БЕСПЛАТНЫЙ, поэтому вам не нужно ничего платить.

С другой стороны, установка довольно проста, и что мне особенно нравится, так это то, что она не только выполняет резервное копирование вашей базы данных, у вас также есть возможность резервного копирования ваших файлов, а затем сохранения всего этого в zip-файле. Когда я говорю файлы, я имею в виду файлы хранилища, такие как загружаемые документы или файлы, которые вы создаете с помощью своего приложения.

Кроме того, вы также можете перенести это на AWS S3, что является разумным решением. Все, что вам нужно сделать, это (при условии, что у вас уже есть учетная запись AWS, это создать новую корзину S3 с новыми разрешениями. Затем вы можете просто следовать документации на их странице Github.

Вот краткий предварительный просмотр файла конфигурации, который вы можете настроить, чтобы получать уведомления через другие средства, такие как Slack и электронная почта.

‘notifications’ => [

‘notifications’ => [
\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    => [‘mail’, ‘slack’],
],

/*
* Здесь вы можете указать уведомляемый объект, на который должны быть отправлены уведомления. Значение по умолчанию
* будет использовать переменные, указанные в этом конфигурационном файле.
*/
‘notifiable’ => \Spatie\Backup\Notifications\Notifiable::class,

‘mail’ => [
‘to’ => [‘editor@andreyex.ru’],
],

‘slack’ => [
‘webhook_url’ => ‘https://hooks.slack.com/services/ABMGGK7AB/B9PBCDSM8/kam02gzLrycaUBctgAdRv52M’,

/*
* Если это значение равно нулю, то будет использоваться канал webhook по умолчанию.
*/
‘channel’ => null,
],
],

 

Настроить автоматизацию

Наконец, все это не имело бы особого смысла, если бы вы решили пропустить часть автоматизации. Для этого вы хотите полагаться на задания cron, которые уже должны быть включены на вашем хосте, и указатель на команду расписания Laravel следующим образом:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

Отсюда в вашем файле app/console/kernel.php вы должны сделать следующее, если хотите автоматизировать его в определенное время (я обычно делаю это, когда большинство наших пользователей спят):

if (app(‘env’) == ‘production’) {
$schedule->command(‘backup:clean’)->daily()->at(’01:00′);
$schedule->command(‘backup:run’)->daily()->at(’02:00′);
}
Exit mobile version