Рубрики
Uncategorized

Резервное копирование оперативной базы данных для планирования задач laravel

Автор оригинала: David Wong.

Нам нужно создавать резервные копии базы данных раз в минуту. Давайте начнем.

php artisan make:comman BackupDatabase

Откройте только что созданный файл и измените его следующим образом:

process = new Process(sprintf('mysqldump -u%s --password=%s %s > %s',
            config('database.connections.mysql.username'),
            config('database.connections.mysql.password'),
            config('database.connections.mysql.database'),
            storage_path('backups/' . $file_name)
        ));
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        try {
            $this->process->mustRun();

            $this->info('The backup has been proceed successfully.');
        } catch (ProcessFailedException $exception) {
            $this->error($exception);
        }
    }
}

Создайте папку резервных копий в хранилище и откройте app/Console/Kernel.php Измените метод схемы следующим образом

protected function schedule(Schedule $schedule)
    {
        $schedule->command('db:backup')
            ->everyMinute();
    }

Введите сервер для выполнения

crontab -e

Если вы откроете crontab в первый раз, он позволит вам выбрать редактор. Здесь (vim) достаточно, третий я выбираю. Но если вы выберете неправильный, у вас могут возникнуть некоторые проблемы, и вы не сможете отредактировать его должным образом, кронтаб-е. Что мне делать? Выполните эту команду: выберите-редактор (команда из crontab), которая позволяет вам повторно выбрать его. Скопируйте следующее

* * * * * php /home/vagrant/code/laravel/artisan schedule:run >> /dev/null 2>&1

/home/бродяга/код/laravel/- это каталог проекта. Минуту спустя вы можете проверить, есть ли файлы SQL, которые создают резервные копии в папке хранилища/резервные копии.