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

Laravel 7.x ile veri tabanımızda günlük, haftalık veya aylık otomatik yedekler oluşturabiliyoruz.

Laravel - 07-09-2020 22:49

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.

Günün Diğer Haberleri