16 Eylül 2012 Pazar

Linux otomatik MySQL backup sistemi

Merhaba, Projeniz ne ile ilgili olursa olsun bir veritabanı yedeğine ihtiyaç duyabilirsiniz. Bir arşiv hazırlayabilir ve kendi belirlediğiniz sürelere kadar veritabanı yedeğini tutabilirsiniz. Bu yazımda size her saat nasıl backup alabileceğimizi göstermeye çalışacağım. Herşeyden önce backup dosyalarınızın tutulacağı bir klasöre ihtiyaç duyacaksınız. "Backup" isimli bir genel klasör oluşturup içinde veritabanı adları ile oluşturulmuş alt klasörler tutmak bana mantıklı gibi geldi. Benim oluşturduğum veritabanının adı "test". Bu yüzden dizinim "/var/www/backup/test" Backup alma işlemini yapacak olan komutları basch script ile yazmayı tercih ettim. Bu yüzden bu dizine "backup.sh" isimli bir dosya oluşturalım.
touch backup.sh
Şimdi düzenleme moduna geçelim ve bash script kodlarımızı yazalım.
nano backup.sh
now=$(date +"%m_%d_%Y_%T")  mysqldump -u root -1234567 test > "/var/www/backup/test/backup_$now.sql"
Yukarıda "now" isimli değişkene kodun çalıştığı zamanki tarihi almış olduk. Onun hemen altındaki satırda mysqldump komutu yer alıyor. MySQL kullanıcı adı ve şifremizle beraber backup almak istediğimiz veritabanının adını yazıyoruz ve ok işaretinden sonraki kısımda backup dosyasının kaydedileceği dizin ve dosya ismini belirtiyoruz. Dosya isimlerine tarih bilgisini yazırmayı tercih ettim. Buraya kadar olan kısımda veribanından bir tablonun backupunu alma işlemini tamamlamış olduk. Şimdi zamanlanmış görev sistemi ile (cronjob) her saat bu işlemi yapmasını sağlayalım.
crontab -e
Yukarıdaki komutu çalıştırarak açılan dosyaya aşağıdaki satırı ekleyelim.
* */1 * * * sh /var/www/backup/test/backup.sh
Tanımlayabileceğimiz dilimleri soldan sağa doğru açıklıyorum: - dakika - saat - hafta - ay - yıl Saat kısmına */1 dediğimiz için her saat bu işlemi yap emrini vermiş oluyoruz. Otomatik veritabanı yedeğini alan sistemimiz çalışır duruma geldi. Servise hazırdır. Afiyet olsun. Devamı için : Linux otomatik MySQL backup sistemi

Hiç yorum yok:

Yorum Gönder

Yorumunuzu esirgemeyiniz..