ahmadajah03 Tue Aug 2020 1 year ago

Contoh Backup Database Otomatis Harian dengan Laravel

Dalam contoh ini, Anda akan belajar contoh backup database laravel. Saya ingin menunjukkan kepada Anda database ekspor laravel ke sql. mari kita bahas tentang cara mengambil backup database di laravel. Kita akan melihat contoh bagaimana mengatur backup database otomatis di laravel.

Kadang kami bekerja di situs web besar dengan data penting. jadi kami sebagian besar kebutuhan untuk mengambil backup database setiap hari, mingguan atau bulanan. jadi kita harus cron menjadwalkan untuk mendapatkan backup database. di sini saya akan memberi Anda petunjuk langkah demi langkah cara membuat backup db otomatis di laravel.

Dalam contoh ini, kami akan membuat database:backup dan kami akan menjadwalkan setiap hari perintah ini untuk dijalankan. perintah ini akan mengambil backup dari database dan dimasukkan ke dalam folder penyimpanan.

Mari ikuti beberapa langkah dan atur backup database harian otomatis menggunakan laravel 6 dan laravel 7.

 

Langkah 1: Instal Laravel

Pada langkah ini, jika Anda belum menginstal aplikasi laravel maka kita harus mendapatkan aplikasi laravel 7 yang baru. Jadi jalankan perintah di bawah ini dan dapatkan aplikasi laravel 7 yang bersih dan baru.

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

Langkah 2: Buat Perintah

Pada langkah ini, kita akan membuat perintah konsol menggunakan perintah artisan laravel. jadi mari kita jalankan perintah di bawah ini:

php artisan make:command DatabaseBackUp

Sekarang mereka membuat file DatabaseBackUp.php di direktori konsol. jadi mari kita perbarui file itu dengan kode pembaruan harian.

app/Console/Commands/DatabaseBackUp.php

<?php
  
namespace App\Console\Commands;
  
use Illuminate\Console\Command;
use Carbon\Carbon;
   
class DatabaseBackUp 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);
    }
}

Langkah 3: Buat Folder Backup

Pada langkah ini, kita perlu membuat folder "backup" di folder storageAnda. Anda harus membuat "backup" di path berikut:

storage/app/backup

pastikan Anda memberi izin untuk menaruh file backup.

Langkah 4: Jadwalkan Perintah

Sekarang, pada langkah ini, kita perlu menjadwalkan perintah yang kita buat. jadi mari kita perbarui file kernel seperti di bawah ini:

app/Console/Kernel.php

<?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\DatabaseBackUp'
    ];
  
    /**
     * 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');
    }
}


Anda dapat memeriksa perintah berikut untuk mendapatkan backup database dengan perintah ini:

php artisan database:backup

Ini akan membuat satu file backup di folder backup Anda. Anda bisa memeriksanya di sana.

Sekarang, kami siap mengatur cron di server kami.

Akhirnya Anda dapat mengelola perintah ini pada cron job , Anda harus menambahkan satu entri ke file crontab server Anda:

Jalankan perintah berikut:

crontab -e
* * * * * 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

Saya harap ini dapat membantu Anda ...

laravel automatic daily database backup laravel