Avamar: AlwaysOn SQL Artımlı Yedeklemeleri "Log Gap" Hataları Nedeniyle Rastgele Başarısız Oluyor
Summary: Günlük Sıra Numarası (LSN) karşılaştırması sırasında artımlı yedekleme için SQL sunucusu, Veritabanı için en son LSN'yi döndürür. Ancak Avamar meta verileri, sqlmeta.xml dosyasında daha eski LSN değerine sahip. Bu durum, SQL Incremental yedeklemelerinin bir günlük boşluğu tespit edildiğinde veya tam yedekleme bulunamadığında başarısız olmasına neden oluyor. Küme yedeklemesi için tablo sys.database_recovery_status en son LSN değeriyle güncellenirken 1 saniyelik genel bir gecikme olduğu gözlemlenmiştir. Sonuç olarak, Avamar SQL Plugin sorgusundan eski LSN numarası döndürülür. ...
Symptoms
2021/03/22-04:30:53.62299 [avsql_assist] Before alignment - Str1: '240000000392000001', Str2: '241000000328000001' 2021/03/22-04:30:53.62299 [avsql_assist] After alignment - Str1: '240000000392000001', Str2: '241000000328000001' 2021/03/22-04:30:53.62299 [avsql_assist] <=== avsql_assist::align_numeric_ustrings 2021-03-22 00:30:53 avsql Info <15765>: A log gap was identified or a full backup was not found. 2021/03/22-04:30:53.62299 [avsql_assist] ===> sqlconnect::~sqlconnect 2021/03/22-04:30:53.62299 [avsql_assist] <=== sqlconnect::~sqlconnect 2021/03/22-04:30:53.62299 [avsql_assist] <=== avsql_assist::snapup_check_timestamps 2021-03-22 00:30:53 avsql Error <40418>: Skipping database 'oalistener07\OA05_AG/_Sync' due to the following reason: A log gap was identified or a full backup was not found.
sqlmeta.xml'daki LSN bilgileri güncel değildir ve aynı Veritabanının SQL sunucu görünümüyle senkronize değildir.
Cause
SQL artımlı yedeklemeleri için işlem, günlük boşluğunu bulurken sys.database_recovery_status'den alınan LSN numarasını karşılaştırır. Bu görev için kullanılan sorgu şu şekildedir:
SELECT last_log_backup_lsn FROM sys.database_recovery_status "WHERE database_id = DB_ID(N’db2-mi')"
Günlük şöyle görünür:
2022/08/24-03:28:01.12199 [avsql_assist] retrieving last backup lsn for 'db2-mi' db from sys.database_recovery_status 2022/08/24-03:28:01.12199 [avsql_assist] ===> sqlconnectimpl_smo::InitDll 2022/08/24-03:28:01.12199 [avsql_assist] SMO dll already loaded. 2022/08/24-03:28:01.12299 [avsql_assist] <=== sqlconnectimpl_smo::InitDll 2022/08/24-03:28:01.12400 [avsql_assist] ==> SMOWrap::SMO_GetLastBackupLSN 2022/08/24-03:28:01.28200 [avsql_assist] database 'db2-mi', last backup lsn = '315000000022400001' 2022/08/24-03:28:01.28200 [avsql_assist] <=== sqlconnectimpl_smo::get_last_backup_lsn 2022/08/24-03:28:01.28200 [avsql_assist] ===> avsql_metadata::get 2022/08/24-03:28:01.28200 [avsql_assist] ===> avsql_metadata::get 2022/08/24-03:28:01.28299 [avsql_assist] <=== avsql_metadata::get 2022/08/24-03:28:01.28299 [avsql_assist] <=== avsql_metadata::get 2022/08/24-03:28:01.28299 [avsql_assist] Last backup LSN: '315000000022400001' (Get from sqlmeta.xml), Current LSN: '315000000022400001'
Bu artımlı işlem sırasında sqlmeta.xml dosyası aşağıdaki sorgu kullanılarak güncelleştirilmiştir:
SELECT last_lsn, type, user_name FROM msdb..backupset WHERE database_name=N'db2-mi' AND type LIKE 'L' ORDER by last_lsn DESC
İki sorgunun sonucunda Veritabanı için aynı LSN numarası bildirilmelidir.
Sonuç eşleşmezse Artımlı yedeklemeler sırasında onaylanmış bir zorla girme "günlük zinciri" dizisi ve günlük boşluğu hatası beklenir. Küme yedeklemeleri sırasında ideal bir senaryoda, yedekleme tamamlandıktan sonra Microsoft SQL Server tablo sys.database_recovery_status en son LSN değeriyle günceller. Avamar SQL eklentisi bu tabloyu LSN için sorgular ve değeri SQL meta verilerinde depolar. Bir sonraki artımlı yedekleme sırasında Avamar SQL eklentisi tabloyu tekrar sorgular ve en son LSN değerini alır. Bu LSN daha sonra SQL meta verilerinde depolanan LSN ile karşılaştırılır ve bir yedekleme gerçekleştirilir.
Yoğun Always küme ortamlarında Avamar SQL eklentisi tabloyu LSN değeri için sorgularken eski LSN değeri elde edilir ve SQL Meta Verilerinde depolanır. Microsoft SQL Server bir süre sonra tabloyu güncelleştiriyor. Bir sonraki artımlı yedekleme sırasında SQL eklentisi tabloyu tekrar sorguladığında en son LSN değerini alır. Bu değer, sqlmeta.xml dosyasında saklanan eski LSN ile karşılaştırıldığında bir günlük boşluğu bulunur ve yedekleme tam olarak yükseltilir.
Resolution
Geçici geçici çözüm:
- Bu arızayı çözmek için veritabanını tam yedeklemeye zorlayın.
- Bu, sqlmeta.xml ve SQL Server'daki belirli Veritabanı için LSN numara serisini yeniden eşitler.
- Bu Veritabanının sonraki tüm artımlı yedeklemeleri başarıyla tamamlanmalıdır.
Kalıcı Çözüm:
- avsql.cmd dosyasına "--latest-lsn-from-msdb=true" bayrağını eklediğinizden emin olun ve istemci eklentisi sürümüne göre düzeltmeyi (HF) uygulayın:
- v19.10-100-135 => HF yok, derleme 166'ya yükseltin ve ilgili HF'yi uygulayın
- v19.10-100-166 (SP1) => HF 338887
- v19.12-100-186 => HF 338888
Düzeltmeyi Dell Support tarafından indirmek için Avamar'da açıklanan adımlara bakın: Dell Destek web sitesinde bir ürün düzeltmesi, yama, yükleme veya yükseltme paketi bulma ve indirme
Düzeltmeyi uygulamak için README dosyasını kullanarak Dell Destek tarafından sağlanan talimatları izleyin veya ilgili düzeltme için Dell Knowledge Base makalesine bakın.
Dikkat: Düzeltmeyi uyguladıktan sonra sorun devam ederse daha fazla yardım için Dell Destek ekibiyle iletişime geçin.