it-swarm.asia

SQL Server (2005/2008): Tam yedekleme, günlüğü tam kurtarma modunda kesiyor mu?

Çok sayıda MSDN belgesini okudum ve farklı kurtarma modellerini ve bir yedekleme zinciri kavramını anladığımı düşünüyorum. Hala bir sorum var:

Tam veritabanı yedeklemesi işlem günlüğünü kısalıyor mu (tam kurtarma modunu kullanarak)?

  • Yanıtınız evet ise: MSDN'de bu nerede belirtilmiştir? Tüm bulabildiğim sadece YEDEKLEME GÜNLÜĞÜNün günlüğü kesmesiydi.

  • Hayır ise: Neden? Tam veritabanı yedeklemesi yeni bir yedekleme zinciri başlattığından, tam yedeklemenin öncesinde daha önce tam yedeklemenin etkin durumda tutulmasının anlamı nedir?

41
Heinzi

Hayır - kesinlikle değil. Yalnızca (TAM veya BULK_LOGGED kurtarma modellerinde günlüğün temizlenmesine/kısaltılmasına izin veren şey bir günlük yedeklemesidir - istisna yoktur. Bu tartışmayı bir süre önce yaptım ve kendinize kanıtlamak için kullanabileceğiniz bir açıklama ve komut dosyası içeren uzun ve ayrıntılı bir blog yazısı yayınladım Günlük ve günlük yedekleri hakkındaki yanlış düşünceler: kendinizi nasıl ikna edersiniz .

Daha fazla soru sormaktan çekinmeyin. Btw - ayrıca TechNet Magazine için yazdığım uzun makaleye bakın SQL Server'da Günlüğe Kaydetme ve Kurtarma'yı Anlama .

Teşekkürler

43
Paul Randal

Tam bir yedekleme günlüğü KESMEZ, bir yedekleme günlüğü işlemi gerçekleştirmelisiniz. Tam bir yedekleme, günlük zincirini yeniden ayarlamaz - bu, çoğaltma/günlük gönderimini vb.

SQL Server'ın nasıl yedekleme yaptığını yakından incelemelisiniz, ancak uçuşta/uzun süren işlemlerin yedeklemeye dahil olmadığını bilmelisiniz (aksi takdirde yedekleme asla tamamlanmayabilir), bu nedenle tam bir yedeklemenin çevrimiçi veritabanı bir sonraki günlük yedeklemesini geçersiz kılacaktır.

http://msdn.Microsoft.com/en-us/library/ms175477.aspx

13
Matt Rogish

Anlayışımdan işlem günlüğünü kesen tek şey bir günlük yedeklemesidir .

Tam yedekleme, işlemin tutarlı olması için günlüğün yalnızca yeterli kopyasını alır, çünkü yedekleme işleminin tamamlanması biraz zaman alır ve bu süre içinde kopyalanan sayfalar değişmiş olabilir.

Zamanında kurtarma için günlük yedeklemelerinize ihtiyacınız vardır.

Bağlantı kurmak için MSDN yok, ancak SQL Server ekibinde bir geliştirici olan Paul Randal'ın blog , DBCC CHECKDB ve Çevrimiçi Kitaplar bölümlerini yazdırabilirim.

Ayrıca bu forumdaki soruları cevaplıyor, bu yüzden benden 2./3. el bilgisinden daha iyi bir otorite olur :)

8
Nick Kavadias

İnsanlar genellikle tam yedekleme ve günlük yedeklemeleri hakkında yanlış anlama yaparlar. Yedeklemenin FULL yedek kurtarma modelinde çalışabilmesi için, t-günlükleri kullanılmalıdır, çünkü yedeklemeler sırasında veritabanında hala işlemler olabilir (COLD yedek veritabanını kapattığınızda). ARCHIVELOG modunda bir veritabanınız olduğunda Oracle aynı kavramı kullanır. Bir yedekleme sırası şu şekildedir:

  1. Yedeklemeyi başlat - tüm eylemleri gerçek dosyalarda askıya alın ve t günlüklerine yazın.
  2. Yedekleme yapın - tüm işlemler devam eder, ancak gerçek dosyalara yazılmaz, t günlüklerine yazılır
  3. Yedeklemeyi sonlandır - veritabanı işlemlerini gerçek dosyalara yazmaya devam et.
  4. Gerekirse, T günlüklerindeki bilgileri gerçek dosyalara akıtın.

Bu nedenle, t-günlükleri, yedekleme aşamasında işlemin devam etmesinin hayati bir parçası olduğu için varsayılan olarak kesilmez/küçültülmez.

5
Peter

Günlüğü kısaltarak günlüğü kısaltarak karıştırmayın.

  • TRUNCATE için, günlükteki son denetim noktasından önceki işlemleri kaldırmaktır (denetim noktası, işlemlerin veritabanının kendisine akıtıldığı zamandır). Bu BACKUP komutu kullanılarak yapılır.

  • KÜÇÜLMEK için günlük, gerçek günlük dosyası boyutunu küçültmektir. Bu DBCC komutları kullanılarak yapılır.

1
Lee Matthews

Temel olarak, işlem günlüklerinin çalışmak için alana ihtiyacı olduğu için otomatik olarak işlem günlüğünü küçültmeniz gerekmez ve otomatik olarak keserseniz neredeyse aynı boyutta kalacaktır.

1
zz