SQL Server 2008'de dizinler yedeklerden nasıl hariç tutulur


19

Çoğunlukla tablolarımızdaki dizinlerin sayısı nedeniyle, gece dolu (ve periyodik diferansiyel) yedeklerimiz oldukça genişliyor; yedekleme boyutunun yaklaşık yarısı dizinlerden oluşur.

Yedeklerimiz için Basit kurtarma modelini kullanıyoruz .

Herhangi bir şekilde kullanarak aracılığıyla, var mı FileGroups, ya da başka bir dosya bölümleme yöntemine dışlamak yedeklerden dizinleri?

Bunun tam metin kataloglara da genişletilmesi iyi olurdu.

Yanıtlar:


15

Tam kurtarma moduna geçerseniz, bunu dosya grupları ile yapabilirsiniz, ancak gerçekten, çok sakar. Verileri birincil dosya grubunda bırakın ve dizinleri ayrı bir (varsayılan olmayan, bu anahtar) dosya grubuna koyun.

Daha sonra yedeklemelerinizi her gece birincil dosya grubu yedeklemeleri ve her X dakikada bir işlem günlüğü yedeklemeleri yapmanız için kademelendirirsiniz.

Olağanüstü durum geldiğinde, birincil dosya grubunu tek başına geri yüklersiniz. Veriler aniden çevrimiçi, ancak dizinler mevcut değil. Ancak, normalliğe geri dönmek için bu verileri yeni bir temiz veritabanına aktarmanız ve oradan dizin eklemeniz gerekir. Tüm dosya gruplarını geri yüklemeden veritabanını tamamen çevrimiçi hale getiremezsiniz ve "Artık bu dosya grubuna artık ihtiyacım yok" diyemezsiniz.

Bunun nasıl çalıştığı hakkında daha fazla bilgi için , dosya grubu geri yüklemelerinde video eğiticime göz atın.


Hehe, kümelenmemiş dizinleri kendi dosya gruplarına taşıdım; Basit Kurtarma modeli beni tamamen küfretti. Endeksler aslında verilerden daha büyüktü - bana nasıl alay ediyordu! Oh, belki de bazı üçüncü taraflar sihirli bir kurşun ipucu ipucu yayınlayacak :)
Jarrod Dixon

1
Ve belki, sadece belki, bunun için ücretsiz lisans alırsınız. ;-)
Brent Ozar

5

Dürüst olmak gerekirse, başkalarının burada gündeme getirdiği diğer sorunların üstesinden gelseniz bile, bunu gerçekten yapmak istemezsiniz.

Acil bir durumda yedeklemeyi geri yüklediğinizde, dizinlerin yeniden oluşturulmasını beklemek istemezsiniz ve siz bulana kadar iğrenç bir performansla karşılaşırsınız.

Dizin olmadan yedeklemeyi geri yüklemek istediğiniz bir durum düşünemiyorum, bu nedenle her durumda onları aynı anda yedeklemek isteyeceksiniz.

Büyük olasılıkla bu soruna başka çözümler aramanız gerekecek ...

-Adam


1
"Endekslerin yeniden inşasını beklemek istemiyorsun" çok varsayımcı, IMO
Jeff Atwood

2
Evet, ama burada genelleme yaptığımı unutmayın. Ben dizinleri hendek ve yeniden inşa daha iyi durumlar olduğunu ikna olmadım endeksleri yedekleme ve yeniden oluşturmak kaçınmak daha iyi durumlar vardır. Başka bir deyişle, bir vaka genellikle daha iyidir ve belirli bir durum gerektirmedikçe, onları destekleme tarafında hata yapmalıdır. Olduğu söyleniyor, her durum farklı. SO dizinlerinin yeniden oluşturulmasının ne kadar sürdüğünü ve sitenin performansının tamamlanana kadar ne kadar acı çektiğini merak ediyorum (yeniden oluşturma sırasında bittiğini varsayarak).
Adam Davis

Uzun vadeli arşiv yedekleme, şu anda baktığım özel kullanım örneğidir, bu da beni bu soruya yönlendirdi. Tamamlanmış ve artık veritabanını çevrimiçi istemeyen bir projem var, ancak ağ sürücümüzü gerekenden daha büyük bir yedekleme dosyasıyla karıştırmaya gerek yok. Dizin tanımlarını kaybetmek istemiyorum, ancak bunu tekrar geri yüklemek zorunda kalsaydım onları yeniden oluşturmayı düşünmezdim.
richardtallent

3

Bu desteklenmiyormuş gibi geliyor. Bu hata raporu bilgilerinden :

Bu konuya çok ilgi vardı, bu yüzden sahnelerin arkasında neler olduğu ve bu işlevselliği uygulamanın ne anlama geleceği konusunda biraz daha ayrıntıya gireceğim. Bazı dizin sayfası türleri ayrı ayırma birimlerine ayrılırken, diğerleri veri sayfalarıyla karıştırılır. Şu anda sadece bir kapsamın tahsis edilip edilmediğini görmek için tahsis bitmapine baktığımızda, şimdi her tahsis biriminde nelerin depolandığını yorumlamamız gerekiyordu. Ayrıca, artık veri kopyalayan veri dosyalarının doğrusal bir taramasını yapamayacaktık, dosyada atlayacağız. Veri yapılarının tüm bu yorumları yedeklemeyi büyük ölçüde yavaşlatacaktır. Geri yükleme daha da ilginç hale gelir, çünkü yedeklemedeki delikleri hesaba katmak için ba sabitlenmesi gereken birçok yapı vardır. Aksi takdirde, yedeklenmeyen sayfaları işaret eden ve böylece bunlarda çöp vb. Bulunan ayırma haritalarınız olur. Bu nedenle, bunu uygulamak daha az veri tasarrufu yapacağımız, daha uzun sürdüğümüz ve çok şey alacağımız anlamına gelir. daha uzun geri yükleme. Dikkate alınması gereken diğer nokta, bunun iyi olması için büyük miktarda mühendislik çabası gerektireceğidir. Yüzeydeki probleminiz olmasa da, görmek isteyebileceğiniz diğer özelliklerin inşa edilmeyeceği anlamına geldiğini düşünün.


Bu tam metin dizinleri için bir sorun olmaz, değil mi? Bunlar oldukça büyük olma eğilimindedir.
Michael Teper

1

çılgın bir fikir olabilir, ama işte gidiyor.

  1. çok yer kaplayan kümelenmemiş dizinlerinizi bırakın
  2. yedek yap
  3. bıraktığınız dizinleri yeniden oluşturun

Tabii ki bunu gerçekten sadece gün içinde bazı kapalı kalma süresi için izin verirseniz yapabilirsiniz.

Ayrıca, SQL Server bunları bir yığın haline dönüştürmek için çok zaman harcayacağından kümelenmiş dizinlerinizi bırakmayın.

Bu ekstra disk alanını satın almak daha kolay bir çözüm gibi görünüyor mu?

Sıkıştırılmış yedeklemeler yapmayı düşündünüz mü ? bu 2008'in yeni bir özelliğidir, sizin için bir seçenek olabilir.


Evet, yedeklemeler için sıkıştırmayı açtık, ancak yerleşik sıkıştırma o kadar da iyi değil. Aslında bir hafta sonu, sıkıştırılmamış yedek aldık ve sonra devs aşağı devs bizim için 7zip; yaklaşık 1/3 boyutunda, ancak çalıştırmak biraz zaman alıyor!
Jarrod Dixon

Her iki olmadan DB kesinti gelince, olabilir biz gerçekten canlı serverfault.com ve stackoverflow.com kadar mümkün olduğunca? Ben bu düşüncede
titreyim

Kendim test etmedim, ama o kadar şüpheliydim. Çok yapılandırılabilir değil. Hala bir seçenek olarak sıkıştırmaya bakıyorsanız, SQL Lightspeed'e (pahalı, ama harika, ancak fiyat çok tartışılabilir) ve RedGate'in SQL Yedeklemesine bir göz atın . Çok yapılandırılabilir ve mükemmel sonuçlar
Nick Kavadias
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.