Tam yedekleme ve Salt kopya tam yedekleme arasındaki fark


17

SQL Server Central iş parçacığında gördüm Tam bir yedekleme günlüğü keser mi? tam yedeklemenin günlüğü kısaltmaması:

Hayır. Tam veya Diferansiyel yedeklemeler işlem günlüğünü kesmez. - Lynn Pettis
Hayır - tam bir yedekleme günlüğü kesmez. - Chad Crawford

Peki tam yedekleme ile salt kopya tam yedekleme arasındaki fark nedir?

Günlük yedekleme için, günlük zincirini günlüğü kesmeden kırmayı önleyen salt kopya yedekleme vardır. Peki sadece kopya tam yedekleme nedir?

Yanıtlar:


14

En azından diferansiyel yedeklemeleri dikkate almanız gerekir. Yalnızca tam kopya kullanılmadığı sürece, bir sonraki fark yedeklemeniz kapalı olacaktır. Yalnızca Kopya Yedekleri :

Salt kopya tam yedeklemeler (tüm kurtarma modelleri) Salt kopya yedek, diferansiyel taban veya diferansiyel yedek işlevi göremez ve diferansiyel tabanını etkilemez.

Tam ve tam kopya arasındaki tek fark, tam kopyanın diferansiyel zinciri kırmamasıdır. İkisi de günlük dosyasını kesmediği için ikisi de günlük zincirini kırmaz.


24

Tam ve Salt Kopya yedeklemeleri arasındaki temel fark, LSN'nin (Günlük Sıra Numarası) ve özellikle de DatabaseBackupLSNgüncellenip güncellenmediğidir.

Tam yedekleme yaptığınızda, DatabaseBackupLSNgüncellenir. Tam yedeklemeyi aldıktan sonra, bir Yedekleme yedeği alırsanız, yedeklemenin DatabaseBackupLSNTam yedeklemeyle eşleşen bir yedeği vardır ve bu nedenle SQL ikisini birbirine bağlayabilir (örneğin farkın tam olarak takip ettiği LSN'lerden bilir).

Sorun, zamanlanmış yedeklemeler çalıştığında gelir, bu nedenle ilk Tam yedeklemeniz ve ardından bir Diferansiyeller diziniz olur. Manuel olarak bir Tam yedek alırsanız, LSN güncellenir ve daha sonra bu noktadan sonra zamanlanmış yedekleme yoluyla aldığınız her Diferansiyel yedeklemenin orijinal LSN değil yeni LSN referansı olacaktır. Geri yüklemeye ihtiyaç duymanız durumunda, planlanan Tam yedeklemenizi geri yükleyebilirsiniz, ancak manuel işten sonra alınan Diferansiyel yedeklemelerden herhangi birini geri yüklemeye çalıştığınızda, LSN'ler eşleşmediği için başarısız olacağını görürsünüz.

Yalnızca Kopyala yedeklemesiyle, öğesine dokunmaz DatabaseBackupLSNve bu nedenle bu yedekleme zincirini bozmaz.

Sorunun iyi bir açıklaması ve neden bu kadar iyi görsel kılavuzlar içeren Michael K. Campbell'in Yedek Zincirini Kırmak - REDUX (Veya Yeme Karga) ' da neden bu kadar yanlış anladığı var :

SQLmag image - Tam Yedekleme v Copy_Only yedekleri

Dört farklı LSN'nin ve bunların nasıl kullanıldığının iyi bir açıklaması için Simon Liew'in Yedeklemeler için SQL Server Günlük Dizisi Numaralarını Anlama konusuna bir göz atın .

Sorunu önlemenin yolu, bir veritabanının standart yedeklemelerini yapan birden fazla şeyin bulunmamasıdır. Herhangi bir adhoc veya ikincil yedeklemeler salt kopya seçeneğiyle yapılmalıdır, tüm ayrıntılar için Salt Kopya Yedekleri (SQL Server) bölümüne bakın, ancak aslında WITH COPY_ONLYkomutta belirtilen T-SQL aracılığıyla SSMS'de "Yalnızca Yedekleme" seçeneğini kullanın veya PowerShell ile -CopyOnlyparametreyi kullanın .


1
Eklemek için: YALNIZCA KOPYALA, yedek olmayan amaçlar için yedekleme yapılmasına izin verir. Bir müşteri için, yedeklemeler bir kurumsal yedekleme sistemine otomatik olarak yapılır - geri yükleme almak PAINFULL'dur, özellikle de farklı bir ortama (gün boyunca yapılan evrak işleri). SADECE KOPYALA, kurumsal yedekleme tarafından yönetilen yedeklemeye müdahale etmeden bir kopya yapmama ve daha sonra bir test ortamına geri yüklememe izin veriyor.
TomTom

12

Zamanlanmış yedeklemelere sahip bir veritabanımız olduğunu varsayın. Tam yedekleme 24 saatte 00: 00'da bir kez çalışır, ayrıca 6 saatte bir çalışan diferansiyel yedeklemelerimiz ve her saatte çalışan işlem günlüğü yedeklemelerimiz vardır. Peki, başka bir sunucuyu geri yüklemek için günün ortasında fazladan bir tam yedekleme yapmamız gerekirse ne olur? Bu durumda ne yapacağız. Tabii ki, tam bir yedekleme yapabiliriz.

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

Ancak bir veritabanının yedeklemesini yaptığınızda, aşağıdaki yedeklemelerin nasıl geri yükleneceğini etkileyen bazı değişiklikler vardır (diferansiyel yedeklemeler ve işlem günlüğü yedeklerinin her ikisi de geri yükleme işleminin nasıl olacağını etkiler). Bu durumda, aşağıdaki tüm diferansiyel yedeklemeler son tam yedeklemeye bağlı olacaktır. Son tam yedekleme kaybolursa, veritabanı geri yüklemesi imkansızdır.resim açıklamasını buraya girin

Ancak bu veritabanı için aşağıdaki yedekleme veya geri yükleme işlemlerini etkilemeyecek bir yedekleme nasıl yapabiliriz. Burası yalnızca kopya yedeklerinin devreye girdiği yerdir.

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

resim açıklamasını buraya girin


2

Tam bir yedeğiniz ve bir dizi günlük dosyası yedeklemeniz olduğunda, LSN (Günlük Sıra Numarası) kullanılarak bir günlük zinciri korunur. Günlük zincirini bozmadan bir yedekleme yapmak istiyorsanız, salt kopya yedekleme yapın.

Yalnızca kopya yedeklemesi yapmazsanız, günlük zinciri bozulur ve aldığınız yedek en son tam yedek olur. Bu, önceki günlük yedeklemelerinin yeni alınan tam yedeklemelere uygulanamayacağı anlamına gelir. Günlük zinciri çoğunlukla zaman içinde geri kazanımlar veya günlük sevkıyat senaryoları için korunur.

Örneğin: her 6 saatte bir (gece yarısı, 06:00, öğlen, 18:00) tam yedekleme alan bir yedekleme senaryonuz olduğunu ve her 15 dakikada bir yedeklemelerinizi kaydedebileceğinizi varsayalım. Saat 9: 00'da, DB'nizin bir kopyasının test sunucusuna yerleştirilmesi için bir istek gelir. Yedeklemeyi günlük zincirinizi kırmadan veya yedekleme işlerinizi bozmadan almak istersiniz. Bu, yalnızca kopya bir yedekleme alındığı zamandır. Yalnızca kopya yedekleme, normal yedekleme kümelerinizi bozmaz.


1
Ben sadece kopya yedekleme yedekleme günlük zincirini sanmıyorum. Sadece kopya tam bir yedekleme diferansiyel tabanı sıfırlamaz. Bu sadece difference.See bu bağlantıları var sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 ve sqlinthewild.co.za/index.php/2011/03/08/...
BT araştırmacı

1
Cevabını kabul etmedim. Hem tam yedekleme hem de copyonly tam yedekleme, günlük zincirini kırmaz. 'Diferansiyel tabanı sıfırlamamaktan' başka bir kopya yalnızca tam yedekleme, her şekilde normal bir tam yedekleme ile aynıdır. Önceki yorumumda bahsettiğim forum bağlantısına bakın.
BT araştırmacısı

Diyelim ki tam bir yedeğiniz var: FB1 ve 3 günlük yedekleri: LB1, LB2, LB3. Şimdi manuel tam yedekleme yapın: FB2 (copy_only olmadan). 3 günlük daha yedeklemesi bekleyin: LB4, LB5, LB6. Şimdi FB2'yi silin. FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6'yı geri yükleyebilir misiniz?
StanleyJohns

Evet geri yükleyebilirim. i tam yedekleme aldı (copyonly değil) FB1, sonra günlük yedekleme (LB1), sonra tam yedekleme (sadece kopya değil) FB2, sonra tekrar günlük yedekleme (LB2). daha sonra bu sırayla FB1 + LB1 + LB2'yi geri yükledim. Doğru şekilde geri yüklendi ve doğru girilen tüm satırları buldu.
BT araştırmacısı

2
-1 çünkü tam yedeklemeli yalnızca kopyala seçeneğinin LSN zincirleriyle ilgisi yoktur. Araştırmacı bunu belirtti ancak cevabınızı güncellemediniz / silmediniz.
Edward Dortland

0

Tam yedekleme ve yalnızca kopyalama yedeklemesi günlük zincirini bozmaz. sadece bir tlog yedeklemesi yaparsanız bir LSN uyuşmazlığı olacaktır.

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.