SQL günlük dosyası boyutları nasıl korunur


13

Biraz yeni bir DBA ve ben adil bir aktivite miktarına sahip bir SQL Server 2012 örneği yönetiyorum. Tam Kurtarma modunda çalışıyorum çünkü zaman içinde kurtarmaya ihtiyacımız var.

Şu anda, her gün 05:00 de veritabanlarının ve günlüklerin tam bir yedeğini alıyorum. Günlük dosyalarının bazıları 300 gb'a kadar balonlandı ve yedek aldıktan sonra bile boyutu küçülmüyor. Ben benzer bir şey çalıştırarak boyutunu azaltmak için alabilirsiniz:

BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn';
DBCC ShrinkFile([db1_log], 0);

Yedekleme dosyalarının LSN'lerini kontrol ettiğimde şöyle bir şey görüyorum:

RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn'
FirstLSN:  15781000014686200001
SecondLSN: 15802000000665000001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log2.trn'
FirstLSN:  15802000000665000001
SecondLSN: 15805000000004100001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log3.trn'
FirstLSN:  15805000000004100001
SecondLSN: 15808000000004200001

Günlük dosyalarını daraltarak günlük zincirimi kırdığımı sanmıyorum. Bunu okurken, performansımı incittiğime inanıyorum çünkü bu küçülen günlük dosyaları kendilerini yeniden büyütmek zorunda.

Sorular:

  1. Yedeklemelerden sonra günlük dosyası neden küçülmüyor? Taahhütsüz işlemler olduğu için mi?
  2. İlk başta her 05:00 yedeklemeden sonra günlük dosyalarını küçültmek gerektiğini düşünüyordum. Performans için bunun ne kadar kötü olduğunu okuduktan sonra, gün boyunca her birkaç saatte bir düzenli günlük yedeklemeleri almam gerektiğine inanıyorum. Bu doğru mu?
  3. Veritabanının / günlüklerin normal tam yedeğimi her gün 05: 00'da gerçekleşir ve bazen 3 saat sürer. Günlük yedeklemelerini her saat gerçekleşecek şekilde zamanlarsam, günlük yedeklemesi 05:00 ile yedeklendiğinde ne olur?

Yanıtlar:


10
  1. Yedeklemelerden sonra günlük dosyası neden küçülmüyor? Taahhütsüz işlemler olduğu için mi?

Gerçek NTFS günlük dosyası bir işlem günlüğü yedeklemesinden "küçülmez", ancak işlem günlüğündeki VLF'ler (Sanal Günlük Dosyaları) yeniden kullanılmak üzere işaretlenir (çünkü artık medyada yedeklendikleri ve kalıcı oldukları için) işlem günlüğü kullanımı. İşlem günlüğünü yedeklemiyorsanız veya yeterince sık değilseniz, kullanılabilir VLF'ler olmayacaktır ve bu, ek işlem günlüğü girişlerini barındırmak için işlem günlüğünün büyümesine neden olacaktır (otomatik büyüme ayarlanmışsa).

Her şeyden önce her 05:00 yedeklemeden sonra günlük dosyalarını küçültmek gerektiğini düşünüyordum. Performans için bunun ne kadar kötü olduğunu okuduktan sonra, gün boyunca her birkaç saatte bir düzenli günlük yedeklemeleri almam gerektiğine inanıyorum. Bu doğru mu?

Rutin ve planlanmış dosya çekmesi iyi bir fikir değildir. Sadece çok ihtiyaç duyulan alanı geri kazanmanız gerektiğinde bir düşünmelisiniz DBCC SHINKFILE. Ayrıca, işlem günlüğünüzü sürekli olarak büyüttüğünüzde, veritabanının kurtarılması gibi başka şeyleri de engelliyor olabilirsiniz. İşlem günlüğünde çok fazla VLF olduğunda (işlem günlüğü yalnızca küçük bir depolama artışı ile büyütüldüğünde sık karşılaşılan bir sorun) veritabanını kurtarmak için gereken süre istenenden daha uzun olabilir.

3. Veritabanı / günlüklerin normal tam yedeklemem her gün 05: 00'da gerçekleşir ve bazen 3 saat sürer. Günlük yedeklemelerini her saat gerçekleşecek şekilde zamanlarsam, günlük yedeklemesi 05:00 ile yedeklendiğinde ne olur?

Hiçbir şey olmayacak, bu tamamen yasal bir işlem. MSDN'deki aşağıdaki grafiğe bakın . Siyah bir nokta olduğunda, bu iki işlem aynı anda gerçekleşemez. Gördüğünüz gibi, bir veritabanı yedeklemesine ve bir işlem günlüğüne aynı anda izin verilir.

resim açıklamasını buraya girin

Buradaki paket, işlem günlüğünüzü daha sık yedeklemenizdir. İşlem günlüğünüzü daha sık yedeklemeyerek karşılaşabileceğiniz tek sorun NTFS dosya büyümesi değildir. Depolama hatası alıyorsanız ve işlem günlüğünüz kaybolduysa, yalnızca son işlem günlüğü yedeklemenizin gerçekleştiği noktaya geri yükleyebilirsiniz. İşlem günlüğü kaybolursa, günlüğün kuyruğunu yedekleyemez ve hatanın zamanında geri yüklenemez. Sizin durumunuzda, potansiyel olarak 24 saatlik veri kaybedebilirsiniz. Ancak, işlem günlüklerinizi her 30 dakikada bir yedeklerseniz, maksimum veri kaybınız 30 dakika olacaktır. Bu durumda, işlem günlüğünüz kaybolduysa ve tam yedeklemeniz ve sağlam günlük zinciriniz varsa, bu son günlük yedeklemesine geri yükleyebilirsiniz.

İşlem Günlüğü Kesme ile ilgili TechNet belgeleri


5

Karşılaştığınız birincil sorun, günlüklerinizi günde bir kez yedeklemenizdir. Motorun davranışı, bir günlük dosyası içindeki günlük kayıtlarının (kullanılan alan) yalnızca başarılı bir günlük yedeklemesinden sonra kaldırılmasıdır. Bu alan, bir denetim noktası oluştuğunda geri kazanılır , ancak veritabanınız Tam / Toplu Günlük kurtarma durumundaysa, günlük kayıtları yalnızca başarıyla yedeklendiyse kaldırılır.

Günlük yedeklemeleri, Tam yedeklemelerle birlikte kullanılmak üzere tasarlanmıştır ve Tam yedeklemeler arasında düzenli aralıklarla çalıştırılmalıdır. Bu aralık herhangi bir süre olabilir, ancak genellikle 15 dakikada bir günlük yedeklemeleri çalıştırıyorum. Aralığınız, Kurtarma Noktası Hedefinize (RPO) ve kurtarma durumunda ne kadar veri kaybedebileceğinize bağlıdır.

Düzenli günlük yedeklemeleri gerçekleştiriyorsanız, günlük dosyası alanını büyümeye zorlanmadan yöneteceğiniz için düzenli dosya küçültmeleri yapmanız gerekmez.


-1

Daha önce seninle aynı sorunu yaşadım. Günlük dosyam her zaman artar, bunun yerine her gece tam Veritabanı yedeklemesi kullanırım. İşte benim çözümüm:

  1. geçerli günlük dosyanızı yedekleyin.

  2. Veritabanınızı Basit Kurtarmaya Ayarlayın

    • Tam Kurtarma -> Günlük dosyası taahhüt edilen işlemi silmez, sadece verilerinizi yeniden düzenler -> Shink dosyası çok fazla etkilemez -> ve Basit Kurtarma için tam tersi.
  3. Günlük dosyanızı 1 MB veya altına küçültün (tamamen size kalmış)

  4. Veritabanınızı Tam Kurtarma olarak ayarlayın.

Umarım yardım eder

Phong Tran

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.