MSSQL Server İkinci Bir Log Dosyası Oluşturma

Bu makalede ikinci bir log dosya oluşturma işlemini ele almış olacağım. Karşılaşmış olduğum bir sorun üzerine bu makaleyi yazma gereği duydum. Bir gün bir veritabanımızın ldf dosyasının boyutu maksimum sınır olan 2 TB olmuştu böyle bir sorunu çözmek için ikinci bir log dosyası oluşturmuştuk. Neden oluşturduğumuz bu makaleden sonraki makalenin konusu olmuş olacak. Çünkü ikinci bir log dosyası oluşturmak mantıklı değil neden diye soracaksanız bir veritabanında sadece bir log dosyası aktif olabilir. Kısacası ya ldf dosyamız dolmuştur veya ldf dosyamızın olduğu diskte yer olmadığından başka bir disk altında büyütülür. Başka bir disk altında büyütmek tek sunucu üzerinde çalışan databaseler için geçerlidir. AlwaysOn gibi high availability çözümlerinde farklı bir disk altında olması sistemin çalışmamasına sebep olmaz.

Herhangi bir database altında  birden fazla log dosyası olduğunda  sql server sadece bir log dosyasına yazar demiştik. Bu yazma işlemi için hangi log dosyasının autogrowth değeri açıksa veritabanı altında gelen logları yeni belirmiş olduğumuz ldf’e yazar. Sadece autogrowth değerine bakmaz  açık olan ldf’e baktıktan sonra diskte yeterli alan olup olmadığına da bakar.

İkinci bir log dosyası oluşturmak için ilgili veritabanına sağ tıklayıp properties’a girilir.

Properties dedikten sonra files sekmesinde sağ alt tarafta bulunan add butonuna tıklayarak ikinci bir log dosyası oluşturulur.

Add dedikten sonra gelen ekranda Logical Name kısmından yeni oluşturulacak log için bir isim veriyoruz. İsmini TEST2_log2 olarak belirlemiş oldum.

Daha sonra File Type kısmında türünü LOG olarak seçiyoruz. Bu seçimi yaptıktan sonra filegroup kısmında log dosyalarının herhangi bir filegroup’u olmadığı için Not Applicable görünmektedir.

File type kısmında log seçiyoruz. Dikkat edersek Filegroup kısmı Not Applicable oldu. Daha sonra size kısmında log dosyasının başlangıç değerini ve uygun bir autogrowth değeri set ediyoruz.

Dikkat edersek ikinci log dosyamızda oluşmuş oldu. İki log dosyamızın autogrowth değerini aktif veya pasif olduğunu  görmek için Autogrowth / Maxsize kısmındaki 3 noktaya tıklayıp görebiliriz.

Yukarıdaki resimdede görüldüğü gibi iki log dosyamızdada Enable Autogrowth değeri açık. Sql server burada şu yöntemi kullanır. İlk log dosyasının enable autogrowth değeri aktifse bu log dosyasına gelen transaction için yeterli alan olup olmadığı kontrolü yapar eğer yeterli alan varsa ilk log dosyasına yazar. İlk log dosyası enable autogrowth aktif olduktan sonra transaction için yeterli alan yoksa oluşturmuş olduğumuz ikinci log dosyasına yazar. İkinci log dosyasında ldf dosyamız büyümeye devam eder. İkinci log dosyasından büyümesine karar verdikten sonra ilk log dosyasının Enable Autogrowth değerini pasif değere çekiyoruz.

Transaction log dosyası, veritabanı işlemlerinin kesintisiz, kronolojik olarak kaydedildiği için tek bir log dosyası kullanılmaktadır.

Varsayalım ki bir veritabanında iki log dosyası var:

  1. VeriDB_Log1.ldf – 500 MB (aktif)
  2. VeriDB_Log2.ldf – 1 GB (yedekte)

İlk dosya dolduğunda, SQL Server ikinci dosyaya geçer.
Ancak ikisi aynı anda yazılmaz.

Bu makalede ikinci bir log dosyası oluşturarak başlangıçta oluşmuş log dosyasını pasif hale getiriyoruz. Database’in yeni oluşan ldf üzerinde büyümesini sağlıyoruz. Bir sonraki makalede ise oluşturulmuş ikinci log dosyasını shrink yöntemiyle ilk log dosyası üzerinde büyütmüş olacağız.

Hangi log dosyasının ne kadar dolu olduğunu görmek için kullanılır.

DBCC SQLPERF(LOGSPACE);

Not: İkinci bir log dosyası oluşturulursa Always On yapılarınızda ikinci sunucu üzerinde de senkron bir şekilde oluşmaktadır. Anlık göremeyebilirsiniz ama gelir.

Başka bir makalede görüşmek dileğiyle..

Kim Allah’a ve Resülüne itaat eder, Allah’tan korkar ve O’na karşı gelmekten sakınırsa, işte onlar başarıyı elde edenlerin ta kendileridir. Nûr-52

Author: Yunus YÜCEL

Bir yanıt yazın

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