MS Exchange üzerinde gerçekleşen tüm işlemler için aslında bir LOG akışı bulunuyor ve oluşan LOG’lar Transaction LOG olarak adlandırılmaktadır. Exchange Server oluşan bu LOG’ları MBX ve Database dosyalarında oluşan değişiklikleri işlemek için kullanıyor.
LOG oluşturma işlemi aslında döngüsel olarak sürekli devam eder, her LOG dosyası 1MB boyutuna ulaştığında ayrı bir dosya üzerinde işleme devam eder. Her database için ayrı bir LOG tutulmaktadır, LOG dosyası sizin belirtmiş olduğunuz sürücü/klasör içerisinde oluşmaktadır.
Not: Oluşturulan LOG dosyaları kendi kendine temizlenmemektedir, temizleme işlemi kendi kendine gerçekleşmediği için bulunduğu disk alanını tüketmeye başlayacaktır. Temizleme işlemi için Full Backup veya Incremental Backup alınması gerekmektedir.
Exchange Server veritabanı dosyasında değişiklik yapılmadan önce, Exchange değişiklikleri bir işlem günlüğü dosyasına yazar. Bir değişiklik güvenli bir şekilde günlüğe kaydedildikten sonra, veritabanı dosyasına yazılabilir. Bu değişikliklerin, değişiklikler işlem günlüğüne güvenli hale getirildikten hemen sonra, ancak değişiklikler veritabanı dosyasına yazılmadan önce son kullanıcılar tarafından kullanılabilmesi yaygın bir durumdur.
Exchange Server, düzinelerce gigabaytlık (GB) veritabanı sayfasının önbelleğe alınmasını verimli bir şekilde yöneten, yüksek performans için ayarlanmış gelişmiş bir dahili bir sistem kullanmaktadır.
Bir veritabanı sistemde oluşan bir problem yüzünden aniden durursa, önbelleğe alınan değişiklikler sadece önbellek yok edildiği için kaybolmuyor. Veritabanı yeniden başlatılır hale geldiği zaman, MS Exchange Server, LOG dosyalarını tarar ve veritabanı dosyasına henüz yazılmamış değişiklikleri yeniden oluşturur.
MS Exchange Server, tüm bilgileri tek bir dosyaya yazmak yerine, her dosya 1MB olacak şekilde dosya oluşturur. LOG dosyası 1 MB boyutuna ulaştığında Exchange Server dosyayı kapatır ve sıradaki numarayla bir dosya oluşturur ve o dosyaya yazmaya başlar. LOG klasöründe oluşturulan ilk dosya Enn00000001.log adıyla oluşturulur.
Veritabanı LOG dosyaları,farklı dosya adlarıyla ayırt edilmektedir. (Örnek: E00, E01, E02, E03) Veritabanı için açık olan LOG dosyası Enn.log olarak adlandırılmaktadır. Bu dosya doldurulana kadar ve kapatılana kadar bir sıra numarası yoktur.
Enn.chk (Denetim Noktası Dosyası), Exchange Server’ın kaydedilen bilgileri veritabanı dosyalarına yazmada ne kadar ilerlediğini izlemekle görevlidir. Her LOG akışı için bir denetim noktası dosyası ve her veritabanı için ayrı bir LOG akışı bulunmaktadır.
MS Exchange Server’da LOG dosyaları onaltılık bir şekilde isimlendirilmektedir, E000000000009.log dosyası kapatıldığında sonraki oluşan LOG dosyası E0000000000010.log olmaz. E00000000000A.log olarak adlandırılır.
MS Exchange Server, Eseutil.exe aracını kullanarak LOG dosyasının üstbilgisini inceleyebilmekteyiz. LOG dosyasının ilk 4KB’lık dosyası, LOG dosyasının ait olduğu veritabanını açıklayan üst bilgileri içermektedir.
"Eseutil /ml [LOG Dosyasının Adı]"
Yukarıda paylaşmış olduğum görselde, gelecek sefer kullanılacak olan LOG numaralandırmasını görebilirsiniz. Bknz: IGeneration: 45 (0X2D9
MS Exchange Server’da veritabanı header bilgisini veritabanı Mount durumdayken görüntüleme işlemi yapamamaktayız. Ayrıca, herhangi bir veritabanı bağlıyken geçerli günlük dosyasının (Enn.log) bilgisini de görüntüleyemiyoruz.
Exchange yöneticisi olarak, MS Exchange Server’ın dosya header bilgilerini anlamak önemlidir. Header bilgilerini anlayarak incelersek eğer, hangi veritabanı ve LOG dosyalarının birbirine ait olduğunu veya başarılı bir restore için hangi dosyalarının gerekli olduğunu belirleyebiliriz.
Eseutil.exe aracı değeri doğrudan Enn.chk üzerinden okumakla görevlidir, bu sayede denetim noktası dosyasının nerede olduğunu öğrenmek için ayrı bir komut girmemiz gerekmiyor.
Denetim noktası dosyası silinirse, MS Exchange Server yine de LOG dosyalarını uygun bir şekilde kurtarır ve dosyayı yeniden yürütür. Exchange Server bu kurtartma işlemini yaparken, denetim noktası dosyasından başlamak yerine, kullanılabilir olan en eski dosyadan başlayarak taramaya yapar. Bu tarama 1 – 2 saniye sürmektedir.
Exchange Server veritabanı normal şekilde kapatıldığında, bekleyen tüm veriler veritabanı dosyalarına yazılır. Normal kapatmadan sonra, veritabanı kümesi tutarlı olarak gözükür ve MS Exchange Server LOG akışından ayırır.
Eseutil.exe aracını kullanarak veritabanının temiz veya kirli kapatılıp kapatılmadığını anlayabilirsiniz. (Eseutil /mh)
Veritabanı Dissmount duruma geçirildiğinde ve Clean Shutdown modundayken, tüm LOG dosyaları güvenli bir şekilde silinebilir. Tekrar mount edildiğinde Exchange “01.log” olarak bir LOG dizini oluşturur.
Veritabanları dissmount duruma geçirildikten sonra LOG dosyalarını silebiliseniz de, bu işle eski backupları kullanmak operasyonunu etkileyecektir. Mevcut veritabanı aktif LOG dosyalarına ihtiyac duymaz, ancak eski bir veritabanını restore yapacaksanız bu dosyalar gerekebilir.
Veritabanı Dirty ShutDown durumundaysa, veritabanını tekrar düzgün şekilde mount edebilmemiz için denetim noktası dosyasından ileriye doğru olan tüm LOG dosyalarının bulunması gerekmektedir. Eğer, bu LOG dosyaları kullanılamıyorsa veritabanını tutarlı hale getirmek için Eseutil /p komutunu kullanmamız gerekmektedir. eseutil /p komutu tamamlanması database boyutuna göre değişiklik gösterebilir. eseutil /p komutunu çalıştırdıktan sonra birleştirme işlemi için eseutil /d komutunu kullanmanız gerekmektedir. /d komutu veritabanı dizinlerini yeniden oluşturmaktadır.
Exchange Server Circular Logging Nedir? Aktif Hale Getirme Adımları
Circular Logging kavramını tanımaklamak için, Microsoft Exchange Server’ın veri süreçlerini nasıl işlediğine bakmak gerekebilir. Yukarıda Exchange Server LOG işlevini anlattım.
Veritabanı üzerine yeni veri işleme söz konusu olduğunda, MS Exchange Server write-ahead (Önceden Yazma) metodunu kullanmaktadır. Örneğin; yeni bir MBX oluşturdunuz, sistem beraberindeki veri işlemlerini tutmak için bir günlük dosyası kullanır, daha sonra MS Exchange Server geri dönüştürebilir olarak tanımlamadan önce LOG dosyasını DB üzerinde sabitleyemeye devam edecektir.
Circular Logging için Full Backup alınması gerekmektedir, veritabanı restore yetenekleri sınırlandırdığı için sadece en son alınan Backup noktasına dönüş yapabilmektesiniz.
Exchange Server Circular Logging’i etkinleştirerek disk alanından tasarruf edebilirsiniz.(Backup Planlamanız yoksa) Circular Logging, LOG dosyalarının içerdiği veriler veritabanına kaydedildikten sonra Exchange Server’ın LOG dosyalarının üzerine yazmasına olanak tanımaktadır. Circular Logging’in tek bir dezavantajı bulunmaktadır, Circular Logging aktif ise sadece son full yedeklemeye kadar restore işlemi yapabilirsiniz. Incremental backup işlemi ile yedekleme işlemi yapılmaz sadece Full Backup alınması gerekmektedir, çünkü LOG dosyaları olmadığı için sadece son aldığınız Full Backup noktasına geri dönebilirsiniz. Bu durumda her seferinde Full Backup işlemi yapılması gerekecektir.
MS Exchange Server tarafından kullanılan circular logging, her veritabanı işlemi için bir günlük dosyasına döngüsel olarak yazmaktadır. LOG dosyası 1MB boyutuna ulaştığında, LOG dosyası yeniden numaralandırılır ve tekrar dosya oluşturur. Circular Logging (Döngüsel Log), içerdiği verileri veritabanına yazdıktan sonra ilk dosyanın üzerine tekrar yazarak aynı dosyayı kullanır.
Not: Varsayılan olarak Circular Logging Disable olarak gelmektedir. Backup planlamanız yok ise Circular Logging’i disk tasarrufu sağlamak için Enable hale getirmeniz gerekmektedir.
Exchange Server Circular LOG’u aktif hale getirmek için ECP – Servers – Databases- DB – Maintenance bölümünden Circular Logging’i aktif hale getirebilirsiniz.
EMS ile Circular Logging’i aktif hale getirmek için kullanmanız gereken komut seti aşağıdaki gibidir;
Set-MailboxDatabase “Database” -CircularLoggingEnabled:$TrueOrtamınızda birden fazla Database bulunuyorsa hepsinde aktif/devre dışı yapmak için kullanılması gereken komut seti aşağıdaki gibidir;
Get-MailboxDatabase | Set-MailboxDatabase -CircularLoggingEnabled:$True
Get-MailboxDatabase | Set-MailboxDatabase -CircularLoggingEnabled:$False
Hangi database üzerinde Circular Logging’in aktif olduğunu sorgulamak için kullanılması gereken komut seti aşağıdaki gibidir;
Get-MailboxDatabase | where {$_.CircularLoggingEnabled -eq $true}
Circular Logging’i aktif hale getirdikten sonra, ilgili veritabanının LOG’ları silmesi için Veritabanını Dissmount duruma getirip tekrar Mount etmemiz gerekmektedir. Daha sonra Services.exe üzerinde Information Store servisini restart etmeniz gerekmektedir. Bu işlemlerden sonra LOG dosyası içerisinde biriken dosyalarının silindiğini göreceksiniz.
Circular Logging Disable Durumdayken Çalışma Mantığı
Daha önce de söylemiş olduğum gibi, MS Exchange Server üzerinde oluşturduğunuz her database, circular Logging disable olarak gelmektedir. Circular Logging Disable durumdayken, Incremental veya Full Backup alınana kadar Exchange Server Log klasörü içerisinde LOG dosyalarını ayrı ayrı oluşturmaktadır. Yedekleme sonrası LOG klasörü içerisinde oluşturulan tüm dosyalar klasörden kaldırılır. LOG temizlemede en sağlıklı yöntem bu şekildedir.
Bu durumda almış olduğunuz her backup sağlıklıdır, Backup planlamanızda bulunan restore point sayısına göre sağlıklı bir şekilde restore işlemi yapabilirsiniz.