Avamar: Inkrementelle AlwaysOn-SQL-Backups schlagen nach dem Zufallsprinzip aufgrund von "Protokolllücken"-Fehlern fehl
Summary: Für inkrementelle Backups während des Vergleichs der Protokollsequenznummer (LSN) gibt der SQL-Server die neueste LSN für die Datenbank zurück. Avamar-Metadaten weisen jedoch einen älteren LSN-Wert in der sqlmeta.xml Datei auf. Dies führt dazu, dass inkrementelle SQL-Backups fehlschlagen, wenn eine Protokolllücke identifiziert wurde oder kein vollständiges Backup gefunden wurde. Beim Clusterbackup wurde eine allgemeine Verzögerung von 1 Sekunde bei der Aktualisierung der Tabelle sys.database_recovery_status mit dem neuesten LSN-Wert beobachtet. Infolgedessen wird die veraltete LSN-Nummer von der Avamar SQL Plug-in-Abfrage zurückgegeben. ...
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.
Die LSN-Informationen in sqlmeta.xml sind veraltet und nicht mit der SQL Server-Ansicht derselben Datenbank synchronisiert.
Cause
Bei inkrementellen SQL-Backups vergleicht der Prozess die LSN-Nummer, die vom sys.database_recovery_status abgerufen wird, während Protokolllücken gefunden werden. Die für diese Aufgabe verwendete Abfrage lautet:
SELECT last_log_backup_lsn FROM sys.database_recovery_status "WHERE database_id = DB_ID(N’db2-mi')"
Das Protokoll würde wie folgt aussehen:
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 Datei während dieses inkrementellen Updates mithilfe der folgenden Abfrage:
SELECT last_lsn, type, user_name FROM msdb..backupset WHERE database_name=N'db2-mi' AND type LIKE 'L' ORDER by last_lsn DESC
Die Ergebnisse der beiden Abfragen sollten dieselbe LSN-Nummer für die Datenbank melden.
Wenn das Ergebnis nicht übereinstimmt, wird während inkrementeller Backups eine bestätigte "Protokollketten"-Sequenz beim Einbruch und ein Protokolllückenfehler erwartet. Im Idealfall aktualisiert Microsoft SQL Server während Clusterbackups nach Abschluss des Backups die Tabelle sys.database_recovery_status mit dem neuesten LSN-Wert. Das Avamar SQL-Plug-in fragt diese Tabelle nach LSN ab und speichert den Wert in SQL-Metadaten. Beim nächsten inkrementellen Backup fragt das Avamar SQL-Plug-in erneut die Tabelle ab und ruft den neuesten LSN-Wert ab. Diese LSN wird dann mit der in den SQL-Metadaten gespeicherten LSN verglichen und ein Backup wird durchgeführt.
In ausgelasteten Always Cluster-Umgebungen wird ein älterer LSN-Wert abgerufen und gespeichert, während das Avamar SQL-Plug-in die Tabelle nach dem LSN-Wert abfragt. Microsoft SQL Server aktualisiert die Tabelle nach einiger Zeit. Wenn das SQL-Plug-in die Tabelle während des nächsten inkrementellen Backups erneut abfragt, erhält es den neuesten LSN-Wert. Beim Vergleich dieses Werts mit der veralteten LSN, die in der sqlmeta.xml Datei gespeichert ist, wird eine Protokolllücke gefunden und das Backup wird auf "full" hochgestuft.
Resolution
Vorübergehende Problemumgehung:
- Erzwingen Sie ein komplettes Backup dieser Datenbank, um diesen Fehler zu beheben.
- Dadurch wird die LSN-Nummernsequenz für die spezifische Datenbank in sqlmeta.xml und SQL Server neu synchronisiert.
- Alle nachfolgenden inkrementellen Backups dieser Datenbank sollten jetzt erfolgreich abgeschlossen werden.
Dauerhafte Lösung:
- Fügen Sie der avsql.cmd Datei das Flag "--latest-lsn-from-msdb=true" hinzu und wenden Sie den HotFix (HF) gemäß der Version des Client-Plug-ins an:
- v19.10-100-135 => Kein HF verfügbar, Upgrade auf Build 166 und Anwendung des entsprechenden HF
- v19.10-100-166 (SP1) => HF 338887
- v19.12-100-186 => HF-338888
Informationen zum Herunterladen des Hotfix von der Dell Support-Seite finden Sie in den in Avamar beschriebenen Schritten: Anleitung zum Suchen und Herunterladen eines Produkt-Hotfix-, Patch-, Installations- oder Upgradepakets von der Dell Supportwebsite
Um den Hotfix anzuwenden, befolgen Sie die Anweisungen des Dell Supports mithilfe der README-Datei oder lesen Sie den Dell Wissensdatenbank-Artikel für den jeweiligen Hotfix.
Vorsicht: Wenn das Problem nach dem Anwenden des Hotfix weiterhin besteht, wenden Sie sich an den Dell Support, um weitere Unterstützung zu erhalten.