LDF dosyası nedir?
Microsoft SQL Server’da yeni bir veritabanı oluşturduğunuzda, eğer varsayılan ayarları değiştirmemişseniz iki tane dosya oluşturulur. Bunlardan birinin uzantısı .mdf, diğerininki ise .ldf olur. MDF dosyaları veritabanında o anda kayıtlı olan bilgileri saklarken, LDF dosyası ise veritabanındaki kayıtlar üzerinde ne zaman hangi değişikliğin yapıldığını saklar.
LDF dosyası ne işe yarar?
LDF dosyasında saklanan işlem günlüğü bilgisi bize yedekten geri yükleme yaparken geçmişteki istenilen herhangi bir zamana dönebilme imkânı sağlar.
Meselâ her gece 03:00’da Full Backup alıyorsanız, bu yedek ile veritabanını o saatteki hâline tam olarak eksiksiz bir şekilde döndürebilirsiniz. Ancak akşam 17:15’teki hâline döndürebilmeniz mümkün olmaz.
Eğer Full Backup’ın yanı sıra Transaction Log Backup da alırsanız, bu yedek gece 03:00’da alınmış olsa bile, veritabanını örneğin 17:15’teki hâline döndürebilirsiniz. Çünkü Transaction Log’da hangi işlemin hangi anda yapıldığı bilgisi saklanmaktadır.
LDF dosyası neden devamlı büyümeye devam eder?
Yeni bir veritabanı oluşturduğunuzda yedekleme modeli varsayılana olarak Full Recovery Model olur. Bu modelde, Transaction Log Backup alınmadığı sürece LDF dosyası büyüdükçe büyür. Çünkü veritabanı üzerinde yapılan her işlem bu dosyaya kaydedilmektedir. Ancak Transaction Log Backup aldığınızda LDF dosyasının içindeki işlem bilgileri silinir ve boyutu sıfırlanır. Sıfırlanır derken 0 bayt olur demek istemiyorum. Veritabanını ilk oluşturduğunuz zamanki boyutuna döner.
LDF dosyası nasıl küçültülür ve devamlı büyümesi nasıl önlenir?
1. Senaryo
Eğer yedeğin alındığı saate dönebilmek yeterli derseniz (ki bence böyle demeyin), Transaction Log bilgisine ihtiyacınız yok demektir. Bu bilgilerin saklanmaması için veritabanınızı Full Recovery Model’den Simple Recovery Model’e geçirmeniz gerekir.
2. Senaryo
Full Recovery Mode’da kalayım, dolayısıyla istediğim herhangi bir ana geri dönebileyim, ama LDF dosyam da küçük kalsın derseniz, bu durumda Full Backup’ın yanı sıra düzenli olarak Transaction Log Backup da almanız gerekir. Yukarıda da bahsettiğim gibi, Transaction Log Backup alınınca LDF dosyasının içi boşaltılır.
Veritabanımın recovery modelini nasıl öğrenebilirim?
Veritabanlarının recovery modelinin ne olduğunu görmek için şu sorguyu çalıştırabilirsiniz:
SELECT name, recovery_model_desc FROM sys.databases
Veritabanının recovery modelini simple moda nasıl çevirebilirim?
Veritabanının recovery modelini Simple Mode’a geçmek için şu sorguyu çalıştırabilirsiniz:
USE master;
ALTER DATABASE veritabani_adi SET RECOVERY SIMPLE;
Hatırlatma
Simple Mode’a geçince LDF dosyası kendiliğinden küçülmez. Yedekleme modunu değiştirdikten sonra LDF dosyasının boyutunu küçültmek için bir seferlik Shrink Database yapmak gerekir. Shrink Database yapmak için aşağıdaki sorguyu çalıştırabilirsiniz:
DBCC SHRINKDATABASE (veritabani_adi);
Allah sizden sonsuza kadar Razı olsun okadar faydalı olduki hayat kurtardınız gibi bişey oldu aslında