데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

트랜잭션 백업 실패와 전체 백업 성공 그리고 대처 방안

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server에서 트랜잭션 로그는 SQL Server에서 발생하는 모든 행동을 기록 한다. 다음 사례는 트랜잭션 백업이 실패하지만 전체 백업은 성공하는 경우에 대해서 알아 본다.

 

다음과 같이 트랜잭션 로그가 손상되어 백업이 실패하였다.

 

하지만 전체 백업은 성공하였으며 DBCC CHECKDB 도 성공하였다. 트랜잭션 백업이 실패하였지만 전체 백업이 성공한 이유는 트랜잭션 로그의 아키텍처를 살펴보면 이해 할 수 있다.

 

트랜잭션 로그 백업은 마지막 트랜잭션 로그 백업 이후에 생성된 트랜잭션에 대해서만 백업한다. 그래서 손상된 부분의 백업을 시도하고 실패한다.

 

전체 데이터베이스 백업은 데이터베이스가 복원 및 복구할 때 일관성 있는 지점으로 복구 할 수 있도록 트랜잭션 로그를 가지고 있다. 즉 전체 백업 완료 이후 시점에서 가장 오래된 활성 트랜잭션의 시작 트랜잭션 로그를 확인하고 필요로 한다.

 

DBCC CHECK 작업은 일관성 검사를 위해 트랜잭션의 일관성 있는 뷰를 얻을 수 있는 데이터베이스 스냅숏을 사용한다. 이러한 데이터베이스 스냅샷 생성은 응급복구시 일관성을 유지를 위해 사용 할 수 있다. 즉 전체 백업이 실행 된 것처럼 전체 백업 이후 가장 오래된 활성 트랜잭션을 필요로 한다. 그래서 트랜잭션 백업이 실패하더라도 전체 백업은 가능하다.

 

그렇다면 트랜잭션 로그 파일이 손상되었을 때는 어떻게 해야 할까? 응급 상황의 경우 다음과 같은 방법으로 대처할 수 있다.

  1. 데이터베이스의 모든 사용자들의 활동을 중지 한다. (single user mode)
  2. 데이터베이스 모델을 심플로 변경 한다. (recovery mode simple)
  3. 데이터베이스 모델을 전체로 변경 한다. (recovery mode full)
  4. 전체 데이터베이스 백업을 수행 한다. (새로운 로그 백업 체인 시작)
  5. 로그 백업을 한다.

 

가장 중요한 것은 손상이 발생 된 근본적인 이유를 찾아서 해결하는 것이며 다시 발생하지 않도록 예방하는 것이다.

 

 

[참고자료]

http://www.sqlskills.com/blogs/paul/how-can-a-log-backup-fail-but-a-full-backup-succeed/

 




강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
» 트랜잭션 백업 실패와 전체 백업 성공 그리고 대처 방안 jevida(강성욱) 2016.10.13 1540
1929 Fast recovery 와 로그 잠금 jevida(강성욱) 2016.10.13 2021
1928 고스트 클린업 jevida(강성욱) 2016.10.13 2246
1927 페이지 분할이 발생 하였을 때 롤백을 하면 어떻게 될까? jevida(강성욱) 2016.10.13 1640
1926 DBCC WRITEPAGE - DBCC 명령을 사용한 데이터 파괴하기 jevida(강성욱) 2016.10.13 1641
1925 SQL Server Backup Error 3023 jevida(강성욱) 2016.10.13 2248
1924 Delete 작업과 페이지 offset 변화 jevida(강성욱) 2016.10.13 1477
1923 트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 jevida(강성욱) 2016.10.13 5053
1922 PFX 형식의 인증서를 SQL Server에서 사용하기 jevida(강성욱) 2016.10.13 1149
1921 SQL Server NUMA 메모리 노드와 Operating System 접근 jevida(강성욱) 2016.10.13 1290
1920 SQL Server 에러 핸들링 비용 비교 jevida(강성욱) 2016.10.13 1302
1919 압축 백업 시 Checksum 옵션으로 손상 확인하기 jevida(강성욱) 2016.10.13 1633
1918 SQL Server 2012 Memory Manager 구성 jevida(강성욱) 2016.10.13 1263
1917 SQL Server Memory Manager 변화 jevida(강성욱) 2016.10.13 1480
1916 Ring_Buffer_Resource_Monitor jevida(강성욱) 2016.10.13 994
1915 SQL Server 프로파일러 템플릿 만들기 jevida(강성욱) 2016.10.13 1335
1914 SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1770
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1787
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1273
1911 Memory Pressure jevida(강성욱) 2016.10.12 1122





XE Login