Avamar:「ログギャップ」エラーが原因でAlwaysOn SQL増分バックアップがランダムに失敗する
Summary: ログ シーケンス番号(LSN)比較中の増分バックアップの場合、SQL Serverはデータベースの最新のLSNを返します。ただし、Avamarメタデータのsqlmeta.xml ファイルに古いLSN値が含まれています。これにより、SQL増分バックアップが失敗し、ログ ギャップが特定されたか、フル バックアップが見つかりませんでした。 クラスター バックアップでは、最新のLSN値でテーブル sys.database_recovery_statusを更新する際に、一般的な遅延が1秒であることが確認されました。その結果、Avamar SQLプラグイン クエリーから古い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.
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
2 つのクエリの結果は、データベースに対して同じ LSN 番号を報告する必要があります
結果が一致しない場合は、増分バックアップ中に「ログ チェーン」の侵入シーケンスとログ ギャップ エラーが確認されます。クラスター バックアップ中の理想的なシナリオでは、バックアップの完了後に、Microsoft SQL Serverがテーブル sys.database_recovery_statusを最新のLSN値で更新します。Avamar SQLプラグインは、このテーブルでLSNをクエリーし、値をSQLメタデータに格納します。次回の増分バックアップ中に、Avamar SQLプラグインは再度テーブルに対してクエリーを実行し、最新のLSN値を取得します。次に、この LSN が SQL メタデータに格納されている LSN と比較され、バックアップが実行されます
ビジー状態の常時クラスター環境では、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 =HF 338888>
Dellサポート側からホットフィックスをダウンロードするには、「 Avamar: DellサポートWebサイトから製品のホットフィックス、パッチ、インストール、またはアップグレード パッケージを検索してダウンロードする方法
ホットフィックスを適用するには、READMEファイルを使用してDellサポートから提供された手順に従うか、特定のホットフィックスに関するDellナレッジベース記事を参照してください。
警告:ホットフィックスの適用後も問題が解決しない場合は、Dellサポートにお問い合わせください。