Avamar: I backup incrementali SQL AlwaysOn hanno esito negativo in modo casuale a causa di errori di "log gap"
Summary: Per il backup incrementale durante il confronto del numero di sequenza del registro (LSN), SQL Server restituisce l LSN più recente per il database. Tuttavia, i metadati Avamar hanno un valore LSN precedente nel file sqlmeta.xml. Ciò causa l'esito negativo dei backup incrementali SQL, con l'identificazione di una lacuna nel registro o l'impossibilità di trovare un backup completo. Per il backup del cluster, è stato osservato un ritardo generico di 1 secondo nell'aggiornamento della tabella sys.database_recovery_status con il valore LSN più recente. Di conseguenza, il numero LSN obsoleto viene restituito dalla query del plug-in SQL Avamar. ...
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.
Le informazioni LSN in sqlmeta.xml sono obsolete e non sincronizzate con la vista SQL Server dello stesso database.
Cause
Per i backup incrementali SQL, il processo confronta il numero LSN recuperato da sys.database_recovery_status durante l'individuazione delle lacune nel registro. La query utilizzata per questa attività è:
SELECT last_log_backup_lsn FROM sys.database_recovery_status "WHERE database_id = DB_ID(N’db2-mi')"
Il registro sarebbe simile al seguente:
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 file durante questo aggiornamento incrementale utilizzando la query seguente:
SELECT last_lsn, type, user_name FROM msdb..backupset WHERE database_name=N'db2-mi' AND type LIKE 'L' ORDER by last_lsn DESC
I risultati delle due query devono riportare lo stesso numero LSN per il database.
Se il risultato non corrisponde, è stata confermata una sequenza "log chain" di break-in e sono previsti errori di gap nel log durante i backup incrementali. In uno scenario ideale, durante i backup del cluster, dopo il completamento del backup Microsoft SQL Server aggiorna la tabella sys.database_recovery_status con il valore LSN più recente. Il plug-in SQL Avamar esegue una query su questa tabella per LSN e archivia il valore nei metadati SQL. Durante il backup incrementale successivo, il plug-in SQL Avamar esegue nuovamente una query sulla tabella e ottiene il valore LSN più recente. Questo LSN viene quindi confrontato con l'LSN archiviato nei metadati SQL e viene eseguito un backup.
Negli ambienti sempre cluster occupati, mentre il plug-in SQL Avamar esegue una query sulla tabella per il valore LSN, il valore LSN precedente viene ottenuto e archiviato nei metadati SQL. Microsoft SQL Server aggiornerà la tabella tra qualche minuto. Durante il backup incrementale successivo, quando il plug-in SQL esegue nuovamente una query sulla tabella, ottiene il valore LSN più recente. Quando questo valore viene confrontato con l LSN obsoleto archiviato nel file di sqlmeta.xml, viene individuato un gap di registro e il backup viene promosso a completo.
Resolution
Soluzione temporanea:
- Forzare un backup completo del database per risolvere l'errore.
- In questo modo viene risincronizzata la sequenza di numeri LSN per il database specifico in sqlmeta.xml e SQL Server.
- Tutti i backup incrementali successivi di questo database dovrebbero ora essere completati correttamente.
Correzione permanente:
- Assicurarsi di aggiungere il flag "--latest-lsn-from-msdb=true" al file avsql.cmd e applicare l'hotfix (HF) in base alla versione del plug-in client:
- v19.10-100-135 => nessuna HF disponibile, eseguire l'aggiornamento alla build 166 e applicare la corrispondente HF
- v19.10-100-166 (SP1) => HF 338887
- v19.12-100-186 => 338888 HF
Per scaricare l'hotfix dal lato supporto Dell, consultare la procedura descritta in Avamar: Come trovare e scaricare un hotfix, una patch, un pacchetto di installazione o aggiornamento di un prodotto dal sito web di supporto Dell
Per applicare l'hotfix, seguire le istruzioni fornite dal Supporto Dell utilizzando il file README o consultare l'articolo della Knowledge Base di Dell per l'hotfix specifico.
Attenzione: Se il problema persiste dopo l'applicazione dell'hotfix, contattare il supporto Dell per ulteriore assistenza.