Laravel 7.x ile Günlük, Haftalık ve Aylık Otomatik Veritabanı Yedekleme

2 hafta önce , Okuma süresi 1 dakika.

Laravel 7.x ile veri tabanımızda günlük, haftalık veya aylık otomatik yedekler oluşturabiliyoruz.
Laravel 7.x ile Günlük, Haftalık ve Aylık Otomatik Veritabanı Yedekleme

Laravel 7.x ile veri tabanımızın günlük, haftalık veya aylık otomatik yedeklerini oluşturabiliyoruz. Şimdi sıfırdan laravel kurulumu ile başlayarak nasıl otomatik yedek alabileceğimizi görelim.

1. Laravel Kurulumu:

Aşağıdaki komut ile laravel projemizi oluşturuyoruz:

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

2.  Command Oluşturma:

Bu aşamada artisan komutu ile command oluşturuyoruz:

php artisan make:command DatabaseBackUp

Artisan komutumuz ile birlikte app/ Console/ Commands/ DatabaseBackUp.php dosyamızı oluşturduk. Şimdi günlük yedeklemeyi yapacağımız kodu ekleyelim:

namespace AppConsoleCommands;
use IlluminateConsoleCommand;
use CarbonCarbon;
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);
}
}

3. Backup Dosyasının Oluşturulması:

Bu aşamada backup dosyalarımızı barındıracağımız klasorümüzü storage içinde oluşturuyoruz. Dosya yolumuzun şu şekilde olması gerekiyor: storage/app/backup. Dosya için tüm izinlere sahip olduğunuzdan emin olmanız gerekir.

4. Yedekleme Zamanlamasının Oluşturulması:

Bu aşamada daha önce oluşturduğumuz backup komutunun zamanlamasını yapıyoruz. Bunun için kernel.php dosyamıza aşağıdaki kodu ekliyoruz:

namespace AppConsole;
/**
use IlluminateConsole Scheduling Schedule;
use IlluminateFoundation Console Kernel as ConsoleKernel;
/**
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
'AppConsoleCommands DatabaseBackUp'
];
/**
* Define the application's command schedule.
*
* @param IlluminateConsoleScheduling 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' );
}
}

Evet yedekleme işlemimizi tamamladık. Şimdi sistemimizin çalıştığını kontrol etmek için aşağıdaki komutu uygulayarak yedek dosyamızı kontrol edeceğiz:

php artisan database:backup

Gördüğünüz gibi laravel ile otomatik veritabanı yedeği oluşturmak bu kadar kolay. İsterseniz günlük, haftalık veya aylık otomatik yedek oluşturabilirsiniz.

#php #Laravel