İçeriğe geç
Yeni yazı çıkınca e-posta · 4.812 abone 115 rehber · 78 ipucu · 8 komut RSS GitHub LinkedIn İletişim
Ara Bültene katıl
Bültene katıl 4.812 abone · yeni yazı çıkınca e-posta
Yedekleme & kurtarma

Veritabanı yedeklemesi: dosyayı kopyalamak yetmez

Çalışan bir veritabanının dosyalarını kopyalamak, geri yüklendiğinde açılmayan bir yedek üretir. Doğru yöntem ve kurtarma modeli.

Mustafa Çelik 27 Şubat 2026 · 12 dk okuma

Bir sunucu arızasından sonra veritabanını geri yüklemeye çalıştık. Dosyalar yedekteydi, boyutları doğruydu. Ama veritabanı “kurtarma bekleniyor” durumunda takıldı ve açılmadı.

Sebep basitti: çalışan bir veritabanının .mdf ve .ldf dosyaları kopyalanmıştı. Kopyalama sırasında yazma devam ettiği için dosyalar birbiriyle tutarsızdı.

Neden dosya kopyası çalışmaz

Veritabanı, veriyi diske yazarken bellekte tutar ve işlem günlüğüyle senkronize eder. Herhangi bir anda disk üzerindeki dosyalar tutarlı bir duruma karşılık gelmeyebilir.

Dosyayı kopyaladığınızda, kopyalamanın başladığı an ile bittiği an arasında binlerce işlem gerçekleşir. Sonuç, hiçbir zaman var olmamış bir “durum”dur.

Bu yüzden veritabanı yedeklemesi, veritabanı motorunun kendisi tarafından ya da onunla konuşan bir mekanizma tarafından yapılmalıdır.

Doğru yöntemler

Yerel yedekleme komutu. En güvenilir yol:

BACKUP DATABASE [Uretim]
  TO DISK = 'D:\Yedek\Uretim_20260227.bak'
  WITH COMPRESSION, CHECKSUM, STATS = 10;

CHECKSUM önemlidir: yedek alınırken sayfa bütünlüğü doğrulanır. Bozuk bir sayfayı yedeğe taşımak yerine, o anda hata verir.

VSS ile uygulama tutarlı yedek. Yedekleme yazılımı, VSS yazıcısı üzerinden veritabanına “yazmaları duraklat” der, anlık görüntü alır, devam ettirir. Doğru yapılandırıldığında güvenilirdir.

VSS yazıcısının sağlıklı olduğunu doğrulayın; bozuk bir yazıcı sessizce çökme tutarlı yedek üretir:

vssadmin list writers

Çıktıda ilgili yazıcının durumu Stable ve son hata No error olmalıdır.

Kurtarma modelini bilin

Bu, en çok karıştırılan konudur ve doğrudan veri kaybı miktarını belirler.

Simple (basit): İşlem günlüğü otomatik temizlenir. Yalnızca tam ve fark yedekleri alabilirsiniz. Son yedekten sonraki tüm işlemler kaybolur. Test ortamları için uygundur.

Full (tam): İşlem günlüğü korunur, günlük yedeği alabilirsiniz. Belirli bir zamana geri dönüş (point-in-time) mümkündür.

Kritik veritabanlarında Full modda çalışmalısınız — ama günlük yedeği almıyorsanız Full mod zarar verir. Günlük büyür, diski doldurur ve veritabanı durur.

Bu, sahada en sık gördüğüm veritabanı kaynaklı kesinti sebebidir: mod Full’a alınmış, günlük yedeği kurulmamış.

SELECT name, recovery_model_desc, log_reuse_wait_desc
FROM sys.databases;

log_reuse_wait_desc sütununda LOG_BACKUP görüyorsanız günlük yedeği bekleniyor demektir ve büyüme başlamıştır.

Yedek zinciri

Full modda tipik bir düzen şöyledir:

  • Tam yedek: haftada bir
  • Fark yedeği: her gece
  • Günlük yedeği: 15 dakikada bir

Bu şema, en fazla 15 dakikalık veri kaybı (RPO) sağlar. Geri yükleme sırası: tam → son fark → o günden sonraki tüm günlükler.

Zincirin bir halkası eksikse sonrasına geri dönemezsiniz. Bu yüzden günlük yedeklerini de tam yedekle aynı özenle saklayın.

Geri yükleme provası

Yedeğin geçerliliğini geri yüklemeden test etmenin bir yolu var:

RESTORE VERIFYONLY FROM DISK = 'D:\Yedek\Uretim_20260227.bak' WITH CHECKSUM;

Bu, dosyanın okunabilir ve tutarlı olduğunu doğrular ama gerçek geri yükleme testinin yerini tutmaz — yalnızca dosyanın sağlam olduğunu söyler, içeriğin doğru olduğunu değil.

Gerçek test, ayrı bir sunucuya geri yükleyip uygulamayı bağlamaktır.

Diğer veritabanları

Aynı ilkeler farklı adlarla geçerlidir. PostgreSQL’de pg_dump mantıksal, pg_basebackup + WAL arşivleme fiziksel yedek verir. MySQL’de mysqldump mantıksal, ikili günlükler zamana dönüş sağlar.

Ortak kural şudur: veritabanı motorunun kendi aracını kullanın ve işlem günlüğünü arşivleyin. Dosya kopyalama, yalnızca veritabanı kapalıyken güvenlidir.

Sistem veritabanlarını unutmayın

SQL Server’da master, msdb ve model yedeklenmezse; oturum açma bilgileri, işler ve zamanlanmış görevler kaybolur. Kullanıcı veritabanını geri yüklersiniz ama kimse bağlanamaz.

Bu, felaket kurtarma tatbikatlarında en sık karşılaşılan sürprizdir.

Doğrulama adımı

Ayda bir, üretim veritabanının bir yedeğini ayrı bir sunucuya geri yükleyin ve üç şeyi kontrol edin: veritabanı çevrimiçi oluyor mu, satır sayıları beklenen aralıkta mı, uygulama bağlanabiliyor mu.

Üçüncüsü kritik: veritabanı açılsa bile oturum açma bilgileri eksikse uygulama bağlanamaz. Bu farkı ancak gerçek bir bağlantı denemesi gösterir — ve gerçek bir olayda bunu keşfetmek istemezsiniz.

Mustafa Çelik

Kıdemli Sistem Yöneticisi, Ankara. 12 yıldır Windows Server, Active Directory ve ağ altyapısıyla uğraşıyor; öğrendiklerini bu blogda üretim ortamında denenmiş rehberlere çeviriyor.

Hakkımda

Bu rehber işinize yaradıysa, sonrakini kaçırmayın.

Yeni yazı yayınlandığında tek e-posta. Takvim yok, dilediğiniz an çıkabilirsiniz.

Bülten sağlayıcısı henüz bağlanmadı. Bağlanana kadar e-posta ile yazabilirsiniz ya da RSS akışını takip edebilirsiniz.