SQL Server

SQL Server Backup Stratejileri -5 Maintenance Plan ile Otomatik Backup Planı Oluşturma

Merhabalar önceki 4 yazımızda full backup, differential backup ve transaction log backup nasıl alınır? Avantajları, dezavantajları nelerdir bahsettik. Ama bu işlemleri hep manuel olarak gerçekleştirdik.

Makalemin bir önceki bölümü için;

Şimdi ise otomatik olarak bu yedek alma süreci nasıl yönetilir onu yapacağız. Aslında bu süreç çok kolay. Zira SQL Server neredeyse hiç kod yazmadan sürükle bırak işlemleri ile bize bu işi yapma olanağı sağlıyor. Şimdi bu süreçte bizim iki tane senaryomuz olacak.

Birinde günde 4 kez full ve yarım saatte bir differential backup alacağız.

İkincisinde ise günde 4 kez full, yarım saatte bir differential ve 15 dakikada bir transaction log backup alacağız. Burada çakışmasın diye 15 dakika yerine 17 dakika diyebiliriz. Gerçi çakışsa da sorun olmaz ama yine de biz öyle yapalım.

İlkinden başlayalım yani kolay olandan.

Bu işlemi Management Studio üzerinde MaintenancePlan bölümünden yapacağız.

Maintenance plan oluştururken de iki seçenek var. Birisi Wizard ile diğeri de manuel plan oluşturmak. Kolay olsun diye wizard üzerinden yapıyoruz.

Karşımıza bir sihirbaz çıktı.

Next diyerek devam ediyoruz ve karşımıza çıkan bölüme Full backup ve Differential backup için ayrı ayrı plan oluşturacağımız için Günlük Full Backup yazıyoruz. Ayrıca sadece bir tane görev oluşturacağımız için Single schedule fort he entire plan or no schedule seçeneğini işaretliyoruz.

Şimdi schedule kısmında change butonuna basarak zaman planını oluşturuyoruz.

Schedule a bir isim veriyoruz ve her gün (Daily) olarak ve 6 saatte bir çalışacak şekilde ayarlıyoruz.

Next diyoruz.

Bir sonraki ekranda başka bakım planları da var. Ancak biz full backup alacağımız için Backup Database (Full) işaretliyoruz.

Finish dediğimizde işlem tamamlandı. İşte bu kadar basit.

Şimdi bakalım neler yapılmış?

Maintenance plan sekmesine tekrar bakıyoruz. Görüldüğü gibi bir plan oluşmuş.

Şimdi bunu sağ tık execute diyerek çalıştıralım.

Sistem çalıştı ve tüm database ler için backupları almış görünüyor.

Ama biz bunu elle çalıştırdık. Oysa ilk 6 saatlik dilim olan 18:00’da kendisi otomatik olarak çalışacak. Otomatik demişken, SQL Server’da otomatik ve periyodik olarak çalışacak işleri kontrol eden aracımız SQL Server Agent.

Oluşturduğumuz her bir iş parçacığının adı JOB

Ve period olarak tanımladığımız her bir zaman diliminin adı da schedule. Şimdi dilerseniz bakalım SQL Server Agent’a neler gelmiş?

Görüldüğü gibi buraya bir Job gelmiş.

Şimdi içeriğine bakalım.

Aslında Maintenance Plan Wizard bizim için bir SQL Server Agent Job’ı oluşturmuş. Doğru olan da bu zaten. O zaman ben bu Job üzerinden de bu işlemi çalıştırabilirim.

Hadi deneyelim.

Gördüğümüz gibi sistem yine backup almış durumda.

Peki şimdi de bu Maintenance planı edit moduna alalım.

Wizard ile oluşturduğumuz bir Maintenance planı buradan da bu şekilde değiştirebiliyoruz.

Şimdi buraya çok takılmadan bu Maintenance planı sileceğiz ve manuel olarak kendimiz oluşturacağız.

Önce silelim.

Silince Job’ımızın da gittiğini görebilirsiniz.

Şimdi sıfırdan kendimiz bir full backup planı oluşturalım.

Karşımıza boş bir ekran geldi.

Önce bir schedule tanımlayalım.

Şimdi ortadaki sarı bölmeye task sürükleyeceğiz.

Task’lar sol tarafta.

Buradan Backup Database Task’ı alıyoruz ve boş sayfaya sürükleyip bırakıyoruz.

Sonra bu task üzerinde çift tıklıyoruz. Burada özellikleri bir önceki wizard ile yaptığımız gibi işaretliyoruz. Backup Type’ı full olarak işaretliyoruz.

Sonra File>Save diyerek Maintenance planımızı oluşturuyoruz.

Hem maintenance plan geldi hem de job geldi. Tıpkı wizard da yaptığımız gibi.

Şimdi Job’ı tekrar çalıştırdığımızda

Backup aldığını görüyoruz.

Şimdi bu aşamada biz full backup alma işlemini gerçekleştirdik. Burada akıllara şu sorular gelebilir?

1-Sistem acaba backup alamazsa örneğin disk doldu ve backup alamadı bizim nasıl haberimiz olacak?

2-Sistem 10 günden önceki backupları otomatik olarak siliyor mu zira biz onun için herhangi bir şey yapmadık.

3-Sistem kendi üzerine değil de dışarıya yedek alabilir mi?

1 ve 3. Soruların cevaplarını sonraki yazıda vereceğim. Ancak 2. Soru için eski backup’ları silecek bir işlem yapalım.

Şimdi toolbox’tan Maintenance Plan Clean Up Task’ı alıp sayfaya bırakalım.

Üstünde çift tık yapalım.

Şimdi işlem sırası önce full backup alsın sonra eski backupları silsin şeklinde olsun istiyoruz. O zaman Full backup task’ının üstüne geldiğimizde oluştan yeşil çizgiyi Maintenance plan clean up taska bağlıyoruz.

Şimdi tamam oldu.

Şu ana kadar Günde 4 kez full backup alacak ve her seferinde geçmiş backupları silecek taskımızı oluşturduk. Bunu File>Save diyerek kaydediyoruz.

Şimdi gelelim yarım saatte bir alacağımız differential backup işlemine.

Bunun için önce Full Backup Task’ımızı ve Maintenance Plan Clean Up tas kımızı kopyalıyoruz. Çünkü yeniden oluşturmak yerine bunları kopyalamak çok daha kolay.

Sonra New Maintenance Plan diyoruz.

Boşluk ekrana sağ tık paste diyerek yapıştırıyoruz.

Şimdi burası biraz beklesin biz schedule tanımlayalım.

Şimdi differential backup için schedule tanımlaması da yapıldı. Sırada biraz önce kopyalayıp yapıştırdığımız taskları değiştirme durumu  kaldı. Bunun için Backup Task üzerinde çift tıklayıp önce Full yazan yeri differential ile değiştiriyoruz. Sonra differential backup için backup alınacak yeri değiştiriyoruz.

Şimdi aynı şekilde bu klasördeki eski backupların da silinmesi için Maintenance Plan Clean Up task’ını çift tıklayıp değiştiriyoruz.

Şu anda differential backup alma işlemi de tamamlandı. File>Save diyerek kaydedelim ve bakalım.

Görüldüğü gibi geldi yeni planlar.

Şimdi çalıştıralım.

Sistem hata verdi.

Çünkü bizim klasör olarak verdiğimiz yolda DiffBackup diye bir klasör yok.

Klasörü biz oluşturalım

Yine hata verdi. Çünkü bu dizinin içine de alt dizin oluşturmaya çalışıyor ve yetkisi yok.

Eğer siz default olarak backup dizinine kaydetmesini isteseydiniz bu sorunla karşılaşmazdınız. Ancak differential backupları başka bir dizine almak istediğiniz için buraya yetki vermeniz gerekiyor. Hadi o yetkiyi verelim.

Ve yetki verdikten sonra bu kez çalıştı ve klasörleri oluşturup backupları aldı.

Şimdi aynı işlemi hızlıca transaction log backup için de yapalım. Artık detay anlatmayacağım. Kopyala yapıştır. Sadece backup türünü, backup alınacak dizini  ve schedule ı değiştiriyoruz.

17 dakikada bir olacak şekilde transaction log backup schedule tanımlıyorum.

Maintenance clean up task’ta da hem klasörü hem dosya uzantısını değiştiriyoruz.

İşlem tamamlandı.

Şimdi deneyeceğiz ama önce backup için klasör oluşturuyoruz.

SQL Kullanıcısına tam yetki veriyoruz.

İşlem tamam. Şimdi deneyelim.

Veee çalıştı.

Tlog backup alırken sistem database lerini almaya gerek yok sadece user databaselerini aldık. O da zaten 1 tane idi.

Hadi şimdi de yedekten dönmeye çalışalım.

Bakın hepsini gördü.

O zaman işlem tamamdır. Amacımıza ulaştık.

Sonraki yazımızda daha detaylı bazı konulara değineceğiz inşallah.

Görüşmek üzere.

Sağlıcakla…

İlgili Makaleler

6 Yorum

  1. Herkes için çok faydalı çalışmalar Ömer Hocam. Sağlık afiyet dilerim. Selamlarımla.

  2. Ömer hocam merhabalar.
    Yazılarınızı çok önceden yazmışsınız ancak yeni gördüm ve okudum. Ellerinize sağlık öncelikle.

    Elimde yaklaşık 600GB boyutunda bir veritabanı var, güncel olarak 24 saat kullanımda ve özellikle 08:00’dan, 19:00’a kadar çok aktif veri girdi-çıktıları oluyor. Bir sorun sırasında 1-2 saatlik datayı tolere edebilirim.

    Her akşam 21:00’da full back-up + gun içerisinde 1 saattlik Dif back-up alıp bu dataları saklamak için 2TB bir alan kullanmayı düşünüyorum. Fikrinizi merak ediyorum. Teşekkürler.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu