How to Set Auto Database BackUp using Cron Scheduler In Laravel

In this article, we will see how to set auto database backup using cron scheduler in laravel. here we will set auto database backup using cron scheduler, as you all know datbase is very important part of any website and we need to take backup as per our requirment.

Using cron job scheduling in laravel we will set mysql backups in laravel, you can also set daily, weekly or monthly database backup using cron job.

So, let's see laravel auto backup database, auto database backup using cron scheduler in laravel, scheduling mysql backups in laravel.

Step 1 : Install Laravel

Step 2 : Create Command

Step 3 : Create Backup Folder

Step 4 : Schedule Command

 

Step 1 : Install Laravel

First of all, we are installing the laravel application using the below command. 

composer create-project laravel/laravel blog --prefer-dist

 

 

Step 2 : Create Command

Now, we will create command for auto database backup using cron scheduler.

php artisan make:command Auto_Backup_Database

As of now DatabaseBackUp.php file createdf on console directory. So, edit that file with daily update code.

app/Console/Commands/Auto_Backup_Database.php

namespace App\Console\Commands;
  
use Illuminate\Console\Command;
use Carbon\Carbon;
   
class Auto_Backup_Database extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'database:backup';
  
    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';
  
    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }
  
    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $filename = "backup-" . Carbon::now()->format('Y-m-d') . ".gz";
  
        $command = "mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . "  | gzip > " . storage_path() . "/app/backup/" . $filename;
  
        $returnVar = NULL;
        $output  = NULL;
  
        exec($command, $output, $returnVar);
    }
}

 

 

Step 3 : Create Backup Folder

Now, we need to create new backup folder in your storage folder to store our backup of database and make sure that you have to give permission to put backup file.

 

Step 4 : Schedule Command

In this step we will update kernel file in this path app/Console/Kernel.php.

namespace App\Console;
  
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
  
class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        'App\Console\Commands\Auto_Backup_Database'
    ];
  
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('database:backup')->daily();
    }
  
    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');
  
        require base_path('routes/console.php');
    }
}

We can check database backup using below command.

php artisan database:backup

It will create one backup file in your backup folder. Now, we will setup cron in our live server. At last you can manage this command on scheduling task, we have to add a single entry to your server’s crontab file.

crontab -e

 

 

Also, you can run the below command to backup the database.

* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
   
OR

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

Now, it will take auto backup of your database on daily basis.

 


You might also like :

techsolutionstuff

Techsolutionstuff | The Complete Guide

I'm a software engineer and the founder of techsolutionstuff.com. Hailing from India, I craft articles, tutorials, tricks, and tips to aid developers. Explore Laravel, PHP, MySQL, jQuery, Bootstrap, Node.js, Vue.js, and AngularJS in our tech stack.

RECOMMENDED POSTS

FEATURE POSTS