Cronjob ile Veritabanı Yedekleme

Cronjob ile Cpanel Üzerinden

İşleri Linux üzerinde otomatikleştirmek için Cronjob aracını kullanıyoruz. Cronjob ile günde bir defa, her dakikada bir, her saatte bir gibi yedeklemeler yapabilirsiniz. Windows Server işletim sistemlerinde de Zamanlanmış görevler benzer işi yapsa da Linux üzerinde bu işler oldukça pratik ve eğlenceli.
 
Cronjob ile MySQL veritabanını yedekleyebilirsiniz. Bunun için Cpanel üzerinde bir cronjob tanımlayabilir ya da komut satırından Cronjob oluşturabilirsiniz.

MySQL veritabanını yedeklemek için MySQL Dump aracını kullanıyoruz. Burada veritabanı kullanıcı adı ve şifresi gerekiyor. Yedekleme yapılınca yedek.SQL dosyası aşağıdaki yöntemle hep aynı dosyaya yedeklenebilir, yeni yedek eskisinin üzerine yazılır. Bun Yöntem1 diyelim, Yöntem2 de ise aktif tarih ve saat bilgisi kullanılarak yedekleme yapılıyor.

Burada /usr/bin genelde program dosyalarının bulunduğu Linux'deki dizindir. İstediğimiz yere yedekleme_yolu belirterek yedekleyebiliriz.
 

Yöntem 1:
/usr/bin/mysqldump -ukullanici_adi -psifre veritabani_adi> /yedekleme_yolu/backup/site_adi/yedek.SQL


Yöntem 2:
/usr/bin/mysqldump -ukullanici_adi -psifre veritabani_adi> /yedekleme_yolu/backup/site_adi/$(date +\%d\%m\%Y)_site_adi.sql



Yukarıda Cpanel üzerinde yer alan Cronjob aracı kullanılarak oluşturulan arayüz yer alıyor. Burada istediğiniz komutu verebilir, istediğiniz zamana göre çalışmasını sağlayabilirsiniz. Aşağıda haftada bir defa çalışan bir Cronjob ayarlanıyor.

Resim Kaynak: php - CronJob BackUp: run every day, week, month - Stack Overflow

 

MySQL Event Scheduler

Diğer bir yöntem de MySQL Event Scheduler kullanmaktır. İstediğiniz SQL sorgusunu çalıştırabilirsiniz. aşağıdaki örnekte tbl_kayitlar tablosundan giris_tarih_saat timestamp alanı 7 günden büyük ve eşit kayıtların silinme talimatını veriyoruz. Burada başlangıç olarak 03.05.2021 tarihi saat 00:00:00'ı seçtik.

 

SET GLOBAL event_scheduler = ON;


 

CREATE EVENT olay_adi

ON SCHEDULE EVERY 1 DAY

STARTS '2021-03-05 00:00:00'

DO

DELETE FROM tbl_kayitlar WHERE DATEDIFF( NOW( ) ,  giris_tarih_saat) >=7;


Kaynaklar
 

1) Event Scheduler MySQL :: MySQL 8.0 Reference Manual :: 13.1.13 CREATE EVENT Statement

2) Cpanel Cronjob Guide to configure a Cron job on your server - MailPoet 2 Knowledge Base



Mutlu kodlamalar,
Oğuzhan TAŞ
Mart, 2021
 

Bookmark and Share