İşlem günlüklerini bir zamanlamaya göre yedeklemenin ve kesmenin en iyi yolu


9

Ben DBA değilim, ama şeyler oldukları gibi, DBA şapka takmak ve SQL Server örneğimde bakım planları ayarlamak zorunda.

Bir süredir SSIS'imi bir gecede yürüttüğümde , yedekleri gerçekleştirmek için bir Execute SQL Görevi çalıştırıyorum - temel master.dbo.xp_create_subdirolarak hedef klasörlerin varlığını sağlamak için çalışıyor ve sonra BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT.

Bu görev başarısız olduğunda, işlemin geri kalanı iptal olur ve bir bildirim alırım ve ertesi sabah işlem günlükleri için sürücünün kapasiteye dolduğunu fark etmek için geldim ve bu yüzden onları manuel olarak kesip devam edeceğim. .. hikaye kendini tekrar edinceye ve işlem günlükleri kullanılabilir disk alanını tekrar aşana kadar.

"Manual truncate" komut dosyası şöyle görünür:

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

Bundan yoruldum büyüyorum ve ben denemek ve karar Yani düzgün şeyler yapmak yerine ve adımları izleyin burada ve gerçek oluşturmak bakım planı :

SQL Server bakım planı

Şey, bunu daha önce hiç yapmadım, bu yüzden birkaç sorum var:

  • Bu gibi işlem günlüklerini yedeklemek onları otomatik olarak kısaltır mı yoksa yapmam gereken başka bir şey var mı?
  • Veri ve işlem günlüğü yedeklemelerini aynı anda çalıştırmak uygun mudur? Değilse, bunu yapmanın uygun bir yolu nedir?
  • Yedek dosyalar, sunucudaki tüm dosyaları kapan ve başka bir yerde saklayan başka bir işlem tarafından bir gecede alınır - 2 gün sonra yedekleme setinin süresinin dolması iyi bir fikir olur mu? Bunların süresinin dolmasına ihtiyacım var mı?
  • Temizleme görevleri sırasıyla "eski" .bak ve .trn dosyalarını alt klasörlerinin altında kaldırır G:\Backups. bu mantıklı mı?
  • SSIS'de bunu yapmak daha iyi olur, bu yüzden yedeklemeler başarısız olduğunda / olduğunda ETL'imi başarısız olabilir miyim? Yoksa ETL sürecim bile umurunda mı?

Maalesef bu bir gönderi için çok fazla soru varsa, gerekirse bunun yerine birden fazla soru soracağım ve hepsinin sıkı bir şekilde ilişkili olduğunu düşünüyorum.


3
Ne demek istediğini "kısalt" ile açıklayabilir misin? Bir günlük yedeklemesinin günlük dosyasını küçültmesini beklediğiniz anlamına mı geliyor? Ne amaçla? Yani tekrar büyüyebilir mi?
Aaron Bertrand

3
Ayrıca, daha fazla gitmeden önce bu soruyu ve arka plan için cevaplarını okumanızı öneririz: dba.stackexchange.com/q/29829/1186
Aaron Bertrand

3
Sadece günlük iyileşmeye ihtiyacınız varsa, basit moda geçin. (Neden basit olana, sonra tam olarak geri dönsün? Bunun başarısını ne düşünüyorsun?) Her durumda, hayır, günlüğü yedeklemek günlük dosyasını hiçbir zaman küçültmez.
Aaron Bertrand

3
Bir günlük yedeği almadan 6 ay boyunca tam kurtarma moduna geçerseniz, evet, günlük dosyalarınız büyür. Ancak, dediğiniz gibi, gün boyunca yalnızca okuma etkinliğiniz varsa, tam kurtarma modunu kullanmak bir israf ise, basitleştirin. Daha sonra günlük dosyası genellikle hiç büyümeyecektir (basit kurtarma modunda etkin işlemler dışındaki herkes için alan yeniden kullanılabilir). Ne yaptıklarını bilen DBA'lar genellikle tam kurtarma modunu kullanırlar (böylece zaman içinde bir noktaya geri yükleyebilirler), günlük dosyalarını uygun şekilde boyutlandırırlar ve günlük dosyalarının büyümemesi için günlük yedeklemelerini yeterince sık yaparlar.
Aaron Bertrand

3
Zamanında iyileşmeye ihtiyacınız olmadığını söylediğiniz için, neden tam kurtarma modelini bir seçenek olarak değerlendirdiğinizden emin değilim.,
Aaron Bertrand

Yanıtlar:


7

Sadece bir gecede SSIS yazıyor, gündüz okunuyor - sadece günlük iyileşmeye ihtiyacım var.

Kurtarma modelinizi iş ihtiyaçlarınıza göre seçmelisiniz:

  • Ne kadar veri işi kaybedilebilir ve aynı zamanda hayatta kalabilir?

Yukarıdaki cevaba dayanarak, veritabanı kurtarma modelinizi dikkatlice seçmelisiniz .

Basit bir ifadeyle (toplu olarak kaydedilen kurtarma modelini tartışmamak) ,

  • Tam bir kurtarma modeli, zamanında kurtarma sağlayan günlük yedeklemelerine izin verir.
    • İşlem günlüğü yedeklemelerini aldığınızda günlük kesme işlemi gerçekleşebilir, yani günlük dosyası alanı her günlük yedeklemesinden sonra yeniden kullanılır ve bloat olmaz!
  • Basit bir kurtarma modeli yalnızca TAM yedeklemeler almanıza izin verir. Zamanında kurtarma mümkün değildir.
    • Günlük kesme işlemi yalnızca bir denetim noktası (manuel veya otomatik) gerçekleştiğinde gerçekleşebilir, yani düzenli tam yedeklemeler yaptığınızdan, CHECKPOINT günlük dosyasının etkin olmayan kısmını yeniden kullanacağından işlem günlüğü hakkında endişelenmenize gerek yoktur.

Günlük kesme işleminin işlem günlük dosyasının boyutunda fiziksel bir azalma OLMADIĞINI unutmayın Bu işlem günlük dosyasının etkin olmayan bölümünün yeniden kullanılabilir olarak işaretlendiği anlamına gelir .

Bu nedenle, işlem günlük dosyanızı (ve veri dosyalarınızı) düzgün bir şekilde düzenlemelisiniz. Günlük dosyasının büyümesi otomatik büyüme olaylarında başlar (veritabanınız son çare olarak otomatik büyümeye ayarlanmışsa). Cevabımı kontrol et - Otomatik Büyüme - Yüzde Kullanımı?


Bakım planlarından vazgeçmenizi ve [akıllı bakım çözümü - ki bu kolay, esnek ve en iyi uygulamaları takip eder] - 5 . - Ola'nın yedekleme çözümü (ve Index bakım çözümü de).


sorularınızı ele alalım:

Bu gibi işlem günlüklerini yedeklemek onları otomatik olarak kısaltır mı yoksa yapmam gereken başka bir şey var mı?

Lütfen yedek eklemeyin veya sürelerinin dolmasına izin vermeyin. Büyük bir karmaşa yaratıyorlar. Tarih-saat INITdamgasıyla ayrı günlük yedekleri kullanın ve alın. Bakımı kolay. Bunun için Ola'nın yedekleme çözümünü kullanın. Çözüm, eski yedeklemeleri de silmek için esnektir.

Veri ve işlem günlüğü yedeklemelerini aynı anda çalıştırmak uygun mudur? Değilse, bunu yapmanın uygun bir yolu nedir?

Tam yedeklemenin T-günlük yedeklemesi üzerinde bir etkisi yoktur. Tam yedekleme, geri yükleme durumunda veritabanının tam yedeklemenin veri okuma bölümünün tamamlandığı zamanla işlemsel olarak tutarlı olabilmesi için yeterli işlem günlüğünü içerir. Kontrol edin - tam yedeklemede ne kadar işlem günlüğü bulunur?

Ayrıca, tam yedekleme sırasında günlük yedeklemesi işlem günlüğünü kısaltmaz. Tam yedekleme bittikten sonra (birkaç) günlük yedeklemesi günlüğü keser.

Yedek dosyalar, sunucudaki tüm dosyaları kapan ve başka bir yerde saklayan başka bir işlem tarafından bir gecede alınır - 2 gün sonra yedekleme setinin süresinin dolması iyi bir fikir olur mu? Bunların süresinin dolmasına ihtiyacım var mı?

Temizleme görevleri sırasıyla G: \ Backups alt klasörlerinin altındaki "eski" .bak ve .trn dosyalarını kaldırır. bu mantıklı mı? SSIS'de bunu yapmak daha iyi olur, bu yüzden yedeklemeler başarısız olduğunda / olduğunda ETL'imi başarısız olabilir miyim? Yoksa ETL sürecim bile umurunda mı?

Her ikisi için de Ola'nın yedek bakım çözümünü kullanın. Eski dosyaları silmekle ilgilenecektir.


Muhteşem. Bu yüzden kurtarma modelini tüm veritabanlarım için 'Basit' olarak değiştirdim ve Ola'nın senaryosunu çalıştırdım. Şimdi tek yapmam gereken yaratılan işleri planlamak mı?
Mathieu Guindon

Evet lütfen. Ayrıca, cevap çözüm veya yararlı ise cevap / upvote olarak işaretlemeyi unutmayın - bu şekilde cevapsız olarak bayrak alışkanlık.
Kin Shah
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.