Avamar: Přírůstkové zálohy AlwaysOn SQL náhodně selhávají kvůli chybám "log gap"
Summary: V případě přírůstkového zálohování během porovnávání pořadového čísla protokolu (LSN) vrací SQL Server nejnovější LSN pro databázi. Metadata Avamar však mají v souboru sqlmeta.xml starší hodnotu LSN. To způsobuje selhání přírůstkových záloh SQL, když byla identifikována mezera v protokolu nebo nebyla nalezena úplná záloha. U zálohování clusteru bylo zjištěno, že při aktualizaci sys.database_recovery_status tabulky o nejnovější hodnotu LSN dochází k obecnému zpoždění 1 sekundy. V důsledku toho se z dotazu doplňku Avamar SQL vrátí zastaralé číslo LSN. ...
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.
Informace LSN v sqlmeta.xml jsou zastaralé a nesynchronizované se zobrazením SQL serveru stejné databáze.
Cause
U přírůstkových záloh SQL proces porovnává číslo LSN, které se načte z sys.database_recovery_status při hledání mezery v protokolu. Dotaz použitý pro tuto úlohu je:
SELECT last_log_backup_lsn FROM sys.database_recovery_status "WHERE database_id = DB_ID(N’db2-mi')"
Protokol by vypadal takto:
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'
sqlmeta.xml soubor během této přírůstkové aktualizace pomocí následujícího dotazu:
SELECT last_lsn, type, user_name FROM msdb..backupset WHERE database_name=N'db2-mi' AND type LIKE 'L' ORDER by last_lsn DESC
Výsledky těchto dvou dotazů by měly hlásit stejné číslo LSN pro databázi.
Pokud se výsledek neshoduje, je během přírůstkových záloh očekávána potvrzená sekvence vloupání do řetězce protokolů a chyba mezery v protokolu. V ideálním případě během zálohování clusteru Microsoft SQL Server po dokončení zálohování aktualizuje tabulku sys.database_recovery_status nejnovější hodnotou LSN. Doplněk Avamar SQL se v této tabulce dotazuje na LSN a uloží hodnotu do metadat SQL. Během dalšího přírůstkového zálohování se doplněk Avamar SQL znovu dotazuje na tabulku a získá nejnovější hodnotu LSN. Tento LSN se pak porovná s LSN uloženým v metadatech SQL a provede se zálohování.
Když se v rušných prostředích clusteru Always plugin Avamar SQL dotazuje tabulky na hodnotu LSN, získá se starší hodnota LSN a uloží se do metadat SQL. Microsoft SQL Server po určité době aktualizuje tabulku. Během příštího přírůstkového zálohování, když se modul plug-in SQL znovu dotazuje na tabulku, získá nejnovější hodnotu LSN. Když se tato hodnota porovná se zastaralým souborem LSN uloženým v souboru sqlmeta.xml, najde se mezera v protokolu a záloha se povýší na úplnou.
Resolution
Dočasné zástupné řešení:
- Vynuťte úplnou zálohu této databáze, aby se tato chyba vyřešila.
- Tím se znovu synchronizuje číselná řada LSN pro konkrétní databázi v sqlmeta.xml a SQL Server.
- Všechny následné přírůstkové zálohy této databáze by se teď měly úspěšně dokončit.
Trvalá oprava:
- Nezapomeňte do souboru avsql.cmd přidat příznak "--latest-lsn-from-msdb=true" a použijte opravu HotFix (HF) podle verze modulu plug-in klienta:
- v19.10-100-135 => HF není k dispozici, upgradujte na build 166 a použijte odpovídající HF
- v19.10-100-166 (SP1) => HF 338887
- v19.12-100-186 => HF 338888
Chcete-li stáhnout opravu hotfix ze strany podpory společnosti Dell, postupujte podle kroků popsaných v článku Avamar: Jak najít a stáhnout opravu hotfix, opravu, instalaci nebo balíček upgradu produktu z webu podpory společnosti Dell
Chcete-li použít opravu hotfix, postupujte podle pokynů poskytnutých podporou společnosti Dell pomocí souboru README nebo si přečtěte článek znalostní databáze Dell pro konkrétní opravu hotfix.
Upozornění: Pokud problém přetrvává i po instalaci opravy hotfix, požádejte o další pomoc podporu společnosti Dell.