Avamar:AlwaysOn SQL 增量备份因“日志间隙”错误而随机失败

Summary: 对于日志序列号 (LSN) 比较期间的增量备份,SQL 服务器将返回数据库的最新 LSN。但是,Avamar 元数据在sqlmeta.xml文件中具有较旧的 LSN 值。这会导致 SQL 增量备份失败,并发现日志间隙或未找到完整备份。 对于群集备份,我们观察到使用最新的 LSN 值更新表sys.database_recovery_status时存在 1 秒的一般延迟。因此,将从 Avamar SQL 插件查询返回过时的 LSN 编号。 ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

SQL 增量备份在 AlwaysOn 群集节点上随机失败,并显示错误:
 
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中的 LSN 信息已过时,并且与同一数据库的 SQL Server 视图不同步。

Cause

对于 SQL 增量备份,该过程会比较从sys.database_recovery_status检索的 LSN 编号,同时查找日志间隙。用于此任务的查询为:

SELECT last_log_backup_lsn FROM sys.database_recovery_status "WHERE database_id = DB_ID(N’db2-mi')"

日志如下所示:

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文件:

SELECT last_lsn, type, user_name FROM msdb..backupset WHERE database_name=N'db2-mi' AND type LIKE 'L' ORDER by last_lsn DESC


这两个查询的结果应报告数据库的相同 LSN 编号。
如果结果不匹配,则预计增量备份期间会出现已确认的“日志链”中断序列和日志间隙错误。在群集备份期间的理想情况下,在备份Microsoft完成后,SQL Server 使用最新的 LSN 值更新表sys.database_recovery_status。Avamar SQL 插件在此表中查询 LSN,并将值存储在 SQL 元数据中。在下一次增量备份期间,Avamar SQL 插件会再次查询表并获取最新的 LSN 值。然后将此 LSN 与存储在 SQL 元数据中的 LSN 进行比较,并执行备份。

在繁忙的 Always 群集环境中,当 Avamar SQL 插件查询表中的 LSN 值时,将获取较旧的 LSN 值并将其存储在 SQL 元数据中。Microsoft SQL Server 在一段时间后更新该表。在下一次增量备份期间,当 SQL 插件再次查询表时,它会获取最新的 LSN 值。将此值与存储在 sqlmeta.xml 文件中的过时 LSN 进行比较时,会发现日志间隙,并将备份升级为完整备份。

Resolution

临时解决办法:

  • 强制执行此数据库的完整备份以解决此问题。
    • 这将重新同步 sqlmeta.xml 和 SQL Server 中特定数据库的 LSN 编号规则。
    • 此数据库的所有后续增量备份现在都应成功完成。 

永久修复:

  • 确保将标记“--latest-lsn-from-msdb=true”添加到avsql.cmd 文件,并根据客户端插件程序版本应用修补程序 (HF):
    • v19.10-100-135 => 没有可用的 HF,升级到内部版本 166 并应用相应的 HF
    • v19.10-100-166 (SP1) => HF 338887
    • v19.12-100-186 => 高频338888

要从戴尔支持端下载热修复程序,请参阅 Avamar:如何从戴尔支持网站查找和下载产品热修复程序包、修补程序、安装包或升级包

要应用热修复程序,请使用自述文件按照戴尔支持提供的说明进行作,或参阅戴尔知识库文章了解特定的热修复程序。

注意:如果应用热修复程序后问题仍然存在,请联系戴尔支持以获得进一步的帮助。

Affected Products

Avamar Plug-in for SQL
Article Properties
Article Number: 000184526
Article Type: Solution
Last Modified: 05 Sep 2025
Version:  5
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.