SQL Server Ola Hallengren Yedekleme Stratejisi Rehberi

YUNUS EMRE ATAY

Bu rehber, Ola Hallengren’in meşhur SQL Server Bakım Çözümü’nü kullanarak, Cumartesi Tam (Full) ve hafta içi Diferansiyel (Differential) yedekleme stratejinizi adım adım nasıl kuracağınızı anlatır.

Adım 0: Kurulum Öncesi Hazırlık ve Script İndirme (Kritik!)

Bu adım, DatabaseBackup prosedürünün çalışması için gereken altyapıyı oluşturur.

0.1. Gerekli Scriptleri İndirme

  1. Resmi Kaynağa Gidin: Tarayıcınızı açın ve Ola Hallengren’in SQL Server Bakım Çözümü sayfasına gidin.
  2. Scriptleri İndirin: Yedekleme stratejiniz için aşağıdaki üç temel .sql dosyasını indirin:
    • CommandLog.sql
    • CommandExecute.sql
    • DatabaseBackup.sql

0.2. Yedekleme Klasörünü Hazırlama

  1. Dizin Oluşturun: Yedekleme dosyalarınızın tutulacağı, sunucunuzda veya ağ üzerinde bir dizin oluşturun.
    • Örnek: C:\SQLBackups\ veya \\PaylasimAdiniz\SQLBackups\
  2. Yetki Kontrolü: SQL Server hizmet hesabınızın (genellikle NT Service\MSSQLSERVER veya etki alanı hesabı) bu dizine Yazma/Değiştirme iznine sahip olduğundan emin olun.

0.3. Scriptleri Kurma

Tüm scriptler, sunucunun ana yönetim veritabanı olan master veritabanına kurulmalıdır.

  1. SSMS’yi Açın ve Bağlanın.
  2. master Veritabanını Seçin: Yeni bir Sorgu Penceresi (Ctrl + N) açın ve bağlandığınızın sol üstteki açılır menüde master olarak ayarlandığından emin olun.
  3. CommandLog.sql Kurulumu: İndirdiğiniz CommandLog.sql dosyasını açın ve sorgu penceresinde çalıştırın. Bu, yedekleme sonuçlarının kaydedileceği tabloyu oluşturur.
  4. CommandExecute.sql Kurulumu: İndirdiğiniz CommandExecute.sql dosyasını açın ve sorgu penceresinde çalıştırın.
  5. DatabaseBackup.sql Kurulumu: İndirdiğiniz DatabaseBackup.sql dosyasını açın ve sorgu penceresinde çalıştırın.

Bu adımlarla artık dbo.DatabaseBackup saklı yordamını kullanmaya hazırsınız.


Adım 1: Haftalık Tam Yedekleme (FULL) İşini Kurma

Bu iş, zincirin başlangıcını oluşturur ve 7 günlük temizliği yönetir.

1.1. SQL Server Agent İşini Oluşturma

  1. SSMS’de SQL Server Agent $\rightarrow$ Jobs klasörüne sağ tıklayın ve New Job seçeneğini seçin.
  2. General (Genel) sayfasında bir isim verin: 01-FULL_Haftalik_Yedekleme

1.2. Adımı (Step) Tanımlama

  1. Steps (Adımlar) sayfasına gidin ve New butonuna tıklayın.
  2. Type (Tip): Transact-SQL Script (T-SQL)
  3. Database: master
  4. Command (Komut): Aşağıdaki komutu yapıştırın. (Yolu değiştirmeyi unutmayın!)
EXECUTE dbo.DatabaseBackup
  @Databases = 'USER_DATABASES',        -- Sadece kullanıcı veritabanlarını yedekle
  @Directory = N'C:\SQLBackups\',       -- !!! YEDEKLEME YOLUNUZU BURAYA YAZIN !!!
  @BackupType = 'FULL',                 -- Tam Yedekleme tipi
  @Verify = 'Y',                        -- Yedekleme bütünlüğünü kontrol et
  @CleanupTime = 168,                   -- 7 gün (7 * 24 saat) süresince tut
  @CleanupMode = 'BEFORE_BACKUP',       -- Yeni yedeklemeden önce eskileri temizle
  @Compress = 'Y',                      -- Yedeklemeyi sıkıştır
  @Checksum = 'Y',
  @LogToTable = 'Y'                     -- CommandLog tablosuna kayıt tut
GO

1.3. Zamanlamayı (Schedule) Ayarlama

  1. Schedules (Zamanlamalar) sayfasına gidin ve New butonuna tıklayın.
  2. Name (Ad): Cumartesi_2330
  3. Occurs (Tekrarlama): Weekly
  4. On (Gün): Sadece Saturday (Cumartesi) seçeneğini işaretleyin.
  5. Saat: 23:30:00 (Gece 11:30)


Adım 2: Günlük Diferansiyel Yedekleme (DIFF) İşini Kurma

Bu iş, Tam yedeklemeden sonraki değişen verileri kaydeder.

2.1. SQL Server Agent İşini Oluşturma

  1. Yeni bir iş oluşturun.
  2. General (Genel) sayfasında bir isim verin: 02-DIFF_Gunluk_Yedekleme

2.2. Adımı (Step) Tanımlama

  1. Steps (Adımlar) sayfasına gidin ve New butonuna tıklayın.
  2. Type (Tip): Transact-SQL Script (T-SQL)
  3. Database: master
  4. Command (Komut): Aşağıdaki komutu yapıştırın. (Yolu Adım 1’deki ile aynı tutun!)
EXECUTE dbo.DatabaseBackup
  @Databases = 'USER_DATABASES',
  @Directory = N'C:\SQLBackups\',       -- !!! AYNI YEDEKLEME YOLU !!!
  @BackupType = 'DIFF',                 -- Diferansiyel Yedekleme tipi
  @Verify = 'Y',
  @CleanupTime = 168,                   -- 7 gün boyunca tut
  @CleanupMode = 'BEFORE_BACKUP',
  @Compress = 'Y',
  @Checksum = 'Y',
  @LogToTable = 'Y'
GO

2.3. Zamanlamayı (Schedule) Ayarlama

  1. Schedules (Zamanlamalar) sayfasına gidin ve New butonuna tıklayın.
  2. Name (Ad): Pazar_Cuma_2330
  3. Occurs (Tekrarlama): Weekly
  4. On (Gün): Cumartesi hariç tüm günleri işaretleyin (Pazar, Pazartesi, Salı, Çarşamba, Perşembe, Cuma).
  5. Saat: 23:30:00 (Gece 11:30)

🏁 Sonuç: Temizlik ve Yönetim

  • Temizlik Garantisi: Her iki komuttaki @CleanupTime = 168 ayarı sayesinde, sistem 7 günden eski olan ve geri yükleme zincirini kırmayacak tüm yedekleri otomatik olarak silecektir.
  • İzleme: @LogToTable = 'Y' ayarı, her yedekleme işleminin sonucunu master veritabanındaki dbo.CommandLog tablosuna yazar. Hata kontrolü için bu tabloyu düzenli olarak kontrol edin.

Leave a Reply to %s

Your email address will not be published. Required fields are marked with *

Hey!

Hello! I'm EMRE, and I'm passionate about technology, software, databases, and data analytics. In this blog, I aim to provide helpful content by sharing my learnings and experiences. In my spare time, I enjoy exploring new technologies, writing, and self-improvement.

My contact addresses