Backup ve Restore planları
SQL’de backup restore özelliklerini öğrenmeden önce, veritabanında bir kayıt işlemi nasıl olur onu görelim.
Veri tabanlarına işleme olayını en basit bir banka hesabından anlatmaya çalışalım. Banka hesabımızda para bulunmamaktadır. Bu yüzden kural olarak bankadan para çekemez veya eft yapamazsınız.(Bknz.Şekil-1)
1- ID=1 ile İnternet üzerinden bir başka hesaba EFT yaptığımız varsayalım. İşlemi yapıyoruz ve ilkönce veri tabanının .ldf dosyasına komutu gönderiyoz. Böylece ID=1 oluyor, fakat 3.00 TL olarak yapacağımız eft veritabanımıza işlenmeden (.mdf) kurallara uygun olmadığından dolayı rollback ile iptal ediliyor.
2- ID=2 ile bu sefer başka bir hesaptan kendi hesabımıza 10.00 TL eft yapıyoruz. .ldf ile yaptığımız işlem ID=2 ile .mdf dosyasına yani gerçek veritabanımıza işleniyor. SQL sorgulamadan baktığınız zaman ID=1 ile yapılan kayıtları göremeyiz çünkü bu işlem log dosyası olan .ldf den veritabanına işlenirken kurallara uygun olmadığından dolayı iptal edilmiştir.
Şimdi .ldf ve .mdf dosyaları arasındaki farkı öğrendiğimize göre Recovery Model yani veri tabanı kurtarma modeline geçebiliriz.
Recovery Model 3’e ayrılır:
1- Full : Tüm yapılan işlemler (ldf ve .mdf ) kayıt altına alınır ve backup’a kadar log dosyaları silinmez. Bu genellikle veri akışı fazla ve verilerin önemli olduğu zaman tutulan veritabanı kayıtlarıdır.(Örnek banka veritabanları)
2- Bulk-Logged: Büyük verilerin geçişi sırasına tutulması gereken veritabanı kayıtlarıdır. Yani büyük bir dosyayı veritabanına aktarırken işlem tamamlanana kadar yapılması gereken bir harekettir. Devamlılık arz etmez.
3- Simple: Veri akışının fazla olmadığı, verilerin bizim için büyük bir önem taşımadığı veritabanları için tutulan kayıttır.(Örnek forum siteleri)
Bu ayarların nasıl yapılacağı şekil-2’de belirtilmiştir. Veritabanı ilk oluşturulurken veya oluşturulduktan sonra değiştirilebilir.
Backup ve Restore işlemleri 3’e ayrılır.
1- Full : Tüm .mdf ve .ldf(log) dosylarının yedeği alınır ve yedek alınma işleminden sonra serverda bulunan .ldf dosyaları fazla yer kaplamaması amacıyla silinir.
2- Differential: Full olarak yapılan yedekleme işleminden sonra artırımlı dediğimiz sadece yapılan değişiklerin yedeklendiği backup işlemidir.(Bknz.Şekil-3)
3- Transaction Log: Sadece .ldf dosylarının yedeklerinin alınmasıdır.
Şimdi şekil-3’e bakarak kendi politikanızı oluşturabilmeniz için bir fikir verelim.
1- Akşam saat 00:00’da başlayan full yedekleme işlemimiz sabah saat 06:00’da bitmiştir.
2- Saat 10:00’da Differential yedekleme ile sadece değişiklik olan kayıtların yedeği alınmıştır.(06:00-10:00 arasındaki işlemler)
3- Saat 12:00’de Differential yedekleme ile sadece değişiklik olan kayıtların yedeğialınmıştır.(06:00 -12:00 arasındaki işlemler)
Şimdi saat 12:30 da veritabanımızın çöktüğü düşünelim:
1- Veritabanımız full recovery model : Veri kaybımız yok (Ama veritabanımız full olduğu için log dosyalarının hdd yer olmadığından dolayı veritabanı çökmüş olabilir.Şimdi acaba veritabanımızın recovery modeli full olmalımıdır?)
2- Veritabanımız Simple recovery model : Veri kaybımız 30 dakika (Acaba veritabanımızdaki bu 30 dakika bizi çok etkiler miydi? )
Sonuç olarak;
1- Bir forum sitemiz var çok fazla miktarda veri akışı yok; backup haftalık olarak alınıp, günlük olarak da Differential yedek alabiliriz. Veri tabanımızın recovery modeli simple olabilir. Böylece hosting olarak büyük bir alan almamıza gerek kalmaz.
2- Forum sitemiz de çok fazla veri akışı var; Backup’ı günlük full olarak alabiliriz, hatta günlük belirli saatlerde Transaction Log olarak yedek alabiliriz. recovery modelimiz ise full olması düşünülebilir.
3- İş yerinde internete giren personelin yedekleri tutuluyor, çok fazla veri akışı var ama akşamları kimse mesaide değil, hatta veritabanımızdaki bilgiler çok çok önemi yok; Recovery Model full olabilir, günlük full yedek alırız, günlük olarak da Differential yedek alabiliriz.
Tabi bu varsayımlar benim kendi düşüncem, Şimdi kendi veritabanımızın nasıl bir recovery model ile oluşturulacağı ve yedekleme prosedurlerını nasıl oluşturabileceğimiz hakkında biraz olsun fikir sahibi yapabildiğimi umuyorum.
Teşekkürler Çağlar TEMUR Hocam…
Rica ederim. Ellerinize sağlık, güzel paylaşım olmuş