PHP ile geliştirilen sunucu taraflı projelerin hemen hepsinde ihtiyaç olan veritabanı etkileşimi için çeşitli PHP eklentileri kullanılıyor. Bu yazımızda PDO olarak kısaltılan PHP Data Objects eklentisi ile veritabanı otomatik yedekleme işinin nasıl yapabileceğinden bahsedilecek. Elbette kodun tamamı baştan oluşturabilir ancak aynı kodu tekrar yazmakla zaman kaybetmemek için daha önce Raul Souza Silva tarafından yazılmış yeterli işlevselliğe sahip ve kararlı olduğunu bilinen dbbackup.class.php sınıfı anlatılacak.
Yazının ilk bölümünde yedekleme için gerekli kodlar anlatılırken ikinci bölümde otomatik kod çalıştırma konusuna değinilecektir.
DBBackup sınıfı, birkaç değişken ile veritabanı yedeğini metin olarak elde etmeyi sağlar. PDO veritabanı yedek almak için öncelikle hazır sınıftan bir nesne oluşturup veritabanı bilgilerini değişkenlere atamakla başlayalım.
// otomatik.yedek.php
include "DBBackup.class.php";
$vt = new DBBackup(array(
"driver" => "mysql", // PDO’nun kullanacağı sürücü
"host" => "localhost", // Veritabanı sunucusu
"user" => "vt_kullanici", // Veritabanına erişim yetkisi olan kullanıcı
"password" => "vt_parola", // Parola
"database" => "vt_adi" // Yedeği alınacak veritabanı
));
Gerekli değerleri nesneye atadıktan sonra backup() fonksiyonu ile MySQL veritabanını yeniden oluşturabilmek için gereken komutları metin olarak bir değişkene alabiliriz.
$yedek = $vt->backup();
Bu satır çalıştığında fonksiyondan dönen bilgi bir dize değişken olacaktır. İşlemin hatalı olup olmadığını kontrol ettikten sonra dönen bilgiyi bir sql dosyası olarak kaydedebiliriz. Aşağıdaki örnek kod ile eğer yedek alınabiliyorsa yedek_20170826221035.sql gibi isimle yedek doyası oluşturulacaktır. Yedek alınamıyorsa da yedek_20170826221035.hata gibi bir isimle bu sefer hata kodunu içeren dosya oluşturulacaktır.
if(!$yedek["error"]){
$yd = fopen("yedek_".date("YmdHis").".sql", "a+");
} else {
$yd = fopen("yedek_".date("YmdHis").".hata ", "a+");
}
fwrite($yd, $yedek["msg"]);
fclose($yd);
PDO ile veritabanı yedeklemek için gerekli PHP kodu hazır olduğuna göre sonraki adımda bu kodu otomatik çalıştırılacak şekilde ayarlamak gerekir. Bunun için hosting panelinde bulunan Cron Jobs nasıl ayarlanır görelim.
CPanel Cron Jobs otomatik çalıştırma ayarlarında saatlik, günlük, haftalık, aylık gibi zamanlamalarla istenilen komutlar çalıştırılabilir. Örneğimizde günlük olarak otomatik yedeklemeyi çalıştırmayı ayarlamak için ilgili zamanlamayı seçtikten sonra kod bölümüne de PDO veritabanı yedekleme kodumuzun adresini aşağıdaki şekilde yazacağız.
wget -c http://www.alanadi.com/otomatik.yedek.php
Bu şekilde MySQL veritabanlarına ek olarak diğer PDO veritabanı sürücülerini de kullanarak pek çok sunucudan ototmatik veritabanı yedeklemesi yapılabilir. Diğer PHP ile veritabanı yedekleme örnekleri için sitemizi takip edebilirsiniz.