Avamar: "로그 갭" 오류로 인해 AlwaysOn SQL 증분 백업이 임의로 실패함
Summary: LSN(로그 시퀀스 번호) 비교 중 증분 백업의 경우 SQL Server는 데이터베이스에 대한 최신 LSN을 반환합니다. 그러나 sqlmeta.xml 파일에서 Avamar 메타데이터의 LSN 값이 더 오래되었습니다. 이로 인해 로그 간격이 확인되었거나 전체 백업을 찾을 수 없어 SQL 증분 백업이 실패합니다. 클러스터 백업의 경우 테이블 sys.database_recovery_status 최신 LSN 값으로 업데이트하는 데 일반적인 지연이 1초인 것으로 관찰되었습니다. 따라서 오래된 LSN 번호가 Avamar SQL 플러그인 쿼리에서 반환됩니다. ...
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
두 쿼리의 결과는 데이터베이스에 대해 동일한 LSN 번호를 보고해야 합니다.
결과가 일치하지 않으면 증가분 백업 중에 확인된 "로그 체인" 시퀀스 및 로그 갭 오류가 있는 것입니다. 클러스터 백업 중 이상적인 시나리오에서는 백업이 완료된 후 Microsoft SQL Server가 테이블 sys.database_recovery_status 최신 LSN 값으로 업데이트합니다. 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 번호 시퀀스가 다시 동기화됩니다.
- 이제 이 데이터베이스의 모든 후속 증분 백업이 성공적으로 완료됩니다.
영구 수정:
- avsql.cmd 파일에 "--latest-lsn-from-msdb=true" 플래그를 추가하고 클라이언트 플러그인 버전에 따라 HF(핫픽스)를 적용해야 합니다.
- v19.10-100-135 => 사용 가능한 HF 없음, 빌드 166으로 업그레이드하고 해당 HF를 적용합니다.
- v19.10-100-166(SP1) => HF 338887
- v19.12-100-186 => HF 338888
Dell 지원 측에서 핫픽스를 다운로드하려면 Avamar: Dell 지원 웹사이트에서 제품 핫픽스, 패치, 설치 또는 업그레이드 패키지를 찾아 다운로드하는 방법
핫픽스를 적용하려면 README 파일을 사용하여 Dell 지원에서 제공하는 지침을 따르거나 특정 핫픽스에 대한 Dell 기술 자료 문서를 참조하십시오.
주의: 핫픽스를 적용한 후에도 문제가 지속되면 Dell 지원 부서에 문의하여 추가 지원을 받으십시오.