İşlem günlüğü kesilemiyor, log_reuse_wait_desc - AVAILABILITY_REPLICA


9

Bu sabah veritabanımızın birinde işlem günlüğü tam uyarısı ile uyandım. Bu sunucu her zaman bir küme ve aynı zamanda bir işlem çoğaltma abonesidir. Log_reuse_wait_desc'i kontrol ettim ve logbackup gösterdi. Birisi 4 gün önce kayıt işlerini yanlışlıkla devre dışı bırakmıştı, günlük yedekleme işini yeniden etkinleştirdim ve günlük temizlendi. Sabah 4'ten beri, o sabah daha sonra ofise gideceğimi ve 400GB'a ulaştığında günlüğü büzüştüğümü düşündüm.

10 AM- Ofisteyim ve büzülmeden önce kütük kullanımını kontrol ediyorum ve% 16 civarındaydı. Şaşırdım ve çoğaltma gösteren log_reuse_wait_desc'i kontrol ettim. Kafam karıştı çünkü bu bir çoğaltma abonesi. Daha sonra db'nin CDC için etkinleştirildiğini ve bunun neden olabileceğini düşündük, bu yüzden devre dışı bırakıldı CDC ve şimdi log_reuse_wait_desc AVAILABILITY_REPLICA'yı gösteriyor.

Bu arada günlük kullanımı hala istikrarlı bir şekilde büyüyor ve şimdi% 17. Alwayson kontrol panelini kontrol ediyorum ve gönderilen ve yinelenen kuyruğu kontrol ediyorum ve her ikisi de neredeyse sıfır. Günlük yeniden kullanımının neden AVAILABILITY_REPLICA olarak gösterildiğinden ve günlüğü temizleyemediğinden emin değilim.

Bunun neden olduğu hakkında bir fikrin var mı?

Yanıtlar:


7

Eğer bunu yaparsan:

SELECT * FROM sys.databases

Log_reuse_wait_desc, AVAILABILITY_REPLICA öğesini gösterir; bu, SQL Server'ın Günlük Verilerini Her Zaman Açık Kullanılabilirlik Grubu çoğaltmalarınızdan birine göndermeyi beklediği anlamına gelir. Çoğaltmalardan biri yavaş bir ağ nedeniyle geride kalabilir veya tamamen devre dışı olabilir.

AG kontrol panelini kontrol ederseniz ve hiç kuyruk göstermiyorsa, iplik tükenmesinin kurbanı olmuş olabilirsiniz. Çalışan iş parçacığı tükendikten sonra AG panosunun güncellenmeyi durdurduğu bilinen bir sorundur . Birincil kopyaya güvenmek yerine her çoğaltmadaki durumu doğrudan kontrol etmeniz gerekir. Nick'in Connect öğesindeki notu, çoğaltmayı yeniden başlatmak için bir çoğaltmanın özelliklerini değiştirebileceğinizi söyler, ancak bu her zaman işe yaramaz (özellikle bir çoğaltma üzerinde gönderilmesi gereken çok miktarda veri içeren yüzlerce veritabanınız varsa ve çoğaltmayı yeniden başlatmak çalışan iş parçacığının tekrar tükenmesine neden olabilir.)

Son adam bir AG kopyası oluşturduysa ve artık var olmaması gerekiyorsa, o AG'yi ve / veya kopyasını kaldırmanın zamanı geldi. SQL Server'ınıza bağlanmak için uygulamaların dinleyici adını işaret etmediğine dikkat edin.


Sekonder Async moduna ayarlanmış olsaydı önemli miydi? İkincil KAPALI ise (sabitlenmeyi bekliyor), birincil günlük büyümeye devam eder mi? Teşekkürler!
Michael

İkincil hala AG'de olduğu sürece (açık veya kapalı, senkronize veya senkronize değil), günlük verileri yığılmaya devam edecektir. Sonuçta, ikincil gücü tekrar açtığınızda, verilerini bir yerden alması gerekiyor, değil mi? Bu yüzden bir süre kırılırsa, genellikle AG'den kaldırmanız ve yedeklemeden yeniden başlatmanız daha iyidir.
Brent Ozar
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.