일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 램프 파이썬
- postgresql autovacuum
- postgresql 파티션 테이블
- 가장 긴 바이토닉 부분 수열 파이썬
- 백준 1516 게임 개발
- 백준 1034 램프 파이썬
- 백준 2146 다리 만들기
- 게임 개발 파이썬
- 백준 1167 트리의 지름 파이썬
- 가장 긴 팰린드롬 파이썬
- 백준 1043 거짓말 파이썬
- PostgreSQL Vacuum
- 백준 1238 파티 파이썬
- SQL SERVER 장비교체
- eager vacuum
- autovacuum
- postgresql 파티셔닝
- PostgreSQL
- 백준 2352 반도체 설계 파이썬
- 백준 11054.가장 긴 바이토닉 부분 수열
- 트리의 지름 파이썬
- SWEA
- 역사 파이썬
- 반도체 설계 파이썬
- 다중 컬럼 NOT IN
- 백준 1613 역사
- 다리 만들기 파이썬
- aggressive vacuum
- SQL SERVER MIGRATION
- lazy vacuum
- Today
- Total
공부, 기록
[AWS RDS SQL Server] 백업 로그 관련 데드락 본문
백업 시간대에 모니터링에 데드락이 확인되어 errorlog 등을 확인하였다.
ERRORLOG 내용
NODE 1
PROCESS ID process1b33f7be8c8 (이하 프로세스 A)
DELETE FROM msdb.dbo.backupset
WHERE backup_set_id IN (SELECT backup_set_id
FROM @backup_set_id
frame procname=adhoc line=12 stmtstart=714 stmtend=832 sqlhandle=0x0200000077cf362f18334db4e5df45ed12b88dd5ec463b020000000000000000000000000000000000000000
unknown
inputbuf
DECLARE @num_days_to_retain INT
DECLARE @earliest_retain_datetime DATETIME
SET @num_days_to_retain = CAST('3' AS INT)
IF @num_days_to_retain < 1 BEGIN
RAISERROR('NumDaysToRetain is %d but must be at least 1', 16, 0, @num_days_to_retain) WITH LOG
END
SET @earliest_retain_datetime = DATEADD(day, 0 - @num_days_to_retain, SYSUTCDATETIME())
exec msdb..sp_delete_backuphistory @earliest_retain_datetime
NODE 2
PROCESS ID process1b33f61fc28 (이하 프로세스 B)
BACKUP LOG @database_name TO VIRTUAL_DEVICE = @vdi_device_name WITH buffercount = 6, maxtransfersize = 1048576, INIT, RETAINDAYS = 36, NOSKIP, NOFORMAT, CHECKSUM, STATS = 10, DESCRIPTION = '9d6a1181-a144-4edc-bdde-a12a3f842f63', COMPRESSION;
RESOURCE-LIST-LOG
resource-list
objectlock lockPartition=0 objid=1755153298 subresource=FULL dbid=4 objectname=msdb.dbo.backupfile id=lock1c172fcdc00 mode=X associatedObjectId=1755153298
owner-list
owner id=process1b33f7be8c8 mode=X
waiter-list
waiter id=process1b33f61fc28 mode=IX requestType=wait
pagelock fileid=1 pageid=12445 dbid=4 subresource=FULL objectname=msdb.dbo.backupset id=lock1bf64659300 mode=IX associatedObjectId=72057594048020480
owner-list
owner id=process1b33f61fc28 mode=IX
waiter-list
waiter id=process1b33f7be8c8 mode=U requestType=wait
프로세스 A에서 backupfile 테이블에 X락 backupset 테이블에 U락
프로세스 B에서 backupfile 테이블에 IX 락 backupset 에 IX락
--> sp_delete_backuphistory SP 내에 backupset , backupfile 테이블에 DELETE 구문이 있음
백업 데이터 삭제(20:16:04)와 로그 백업(20:16:03)이 동시에 발생하면서 생긴 현상으로 보임.
--> backupset 테이블에 해당 시점 데이터 누락 확인 2023-09-05 20:16에 DB 백업 로그 내역이 없음
--> 실제 로그백업 파일은 존재.
즉 VICTIM이었던 BACKUP LOG에서 실제 로그 백업 후 데이터 입력이 데드락으로 실패한 것으로 보이며 내부적으로 백업 로그 삭제하는 작업과 데드락이 발생한 것으로 판단됨.
결론 : 실제 백업으로 인한 데드락이 아닌 백업 내역 관리 테이블에서 발생한 데드락으로 확인
'공부 > DATABASE' 카테고리의 다른 글
[SQL Server] 운영 개선건 - 특정 시점 슬로우 쿼리 증가 현상 (0) | 2024.01.24 |
---|---|
mysql 핸들러 테스트 (0) | 2024.01.24 |
[MySQL] DUMP, Xtrabackup, Binlog를 사용한 PITR (0) | 2023.11.18 |
[SQL Server] CDC (0) | 2023.09.20 |
[SQL Server] SP Recompile (0) | 2023.07.30 |