방금 MSDN 문서를 많이 읽었으며 다른 복구 모델과 백업 체인 개념을 이해하고 있다고 생각합니다. 여전히 질문이 하나 있습니다.
전체 데이터베이스 백업이 트랜잭션 로그를 자르나요 (전체 복구 모드 사용)?
-
예인 경우 :이 부분은 MSDN에서 어디에 언급되어 있습니까? 내가 찾을 수있는 것은 백업 로그 만 로그를 자르는 것입니다.
-
그렇지 않은 경우 : 왜? 전체 데이터베이스 백업은 새 백업 체인을 시작 하므로 전체 백업 전에 완료된 트랜잭션을 로그에서 활성 상태로 유지하는 데있어 요점은 무엇 입니까?
답변
그렇습니다. 단지 전체 또는 BULK_LOGGED 복구 모델에서 명확한 / 잘라 내기에 로그를 허용 것은 로그 백업입니다 – 예외. 나는이 논증을 잠시 뒤로 물었고 로그와 로그 백업에 대한 오해 에서 스스로를 증명하는 방법에 대한 설명과 스크립트로 길고 자세한 블로그 게시물을 게시했습니다 .
추가 질문이 있으면 언제든지 문의하십시오. Btw-또한 SQL Server의 로깅 및 복구 이해 에 대한 TechNet Magazine의 긴 기사를 참조하십시오 .
감사
답변
전체 백업은 로그를 자르지 않으므로 백업 로그 작업을 수행해야합니다. 전체 백업은 로그 체인을 재설정하지 않으며 복제 / 로그 전달 등을 완전히 방해합니다.
SQL Server가 백업을 수행하는 방식을 면밀히 살펴 봐야하지만 기내 / 장기 실행 트랜잭션이 백업에 포함되어 있지 않다면 (그렇지 않으면 백업이 완료되지 않을 수 있음) 알고 있으므로 online-database는 다음 로그 백업이 더 이상 사용되지 않도록 보장합니다.
답변
내 이해 에서 트랜잭션 로그를 자르는 유일한 것은 로그 백업 입니다.
전체 백업은 백업 작업이 완료되는 데 시간이 걸리고 복사 된 페이지가 변경되었을 수 있으므로 트랜잭션에 일관성이 있도록 충분한 로그 만 복사합니다.
특정 시점 복구를 위해서는 여전히 로그 백업이 필요합니다.
연결할 MSDN이 없지만 SQL Server 팀의 개발자 인 Paul Randal의 블로그에 링크 할 수 있습니다. DBCC CHECKDB 및 온라인 설명서의 일부를 작성했습니다.
그는 또한이 포럼에 대한 질문에 대답하므로 나에게 2/3 정보를 제공하는 것보다 더 나은 권위가 될 것입니다 🙂
답변
사람들은 종종 전체 백업 및 로그 백업에 대해 오해를합니다. 백업이 FULL
백업 복구 모델 에서 작동 하려면 백업 중에 데이터베이스에서 트랜잭션이 계속 진행될 수 있으므로 (데이터베이스 COLD
를 종료 할 때 소위 백업 을 수행하지 않는 한) t- 로그를 사용해야합니다 . 데이터베이스가 ARCHIVELOG
모드 인 경우 Oracle은 동일한 개념을 사용 합니다. 백업 순서는 다음과 같이 요약됩니다.
- 백업 시작-실제 파일의 모든 작업을 일시 중단하고 t-logs에 씁니다.
- 백업 수행-모든 트랜잭션은 계속되지만 실제 파일에는 기록되지 않으며 t- 로그에 기록됩니다.
- 백업 종료-데이터베이스 트랜잭션을 실제 파일에 다시 작성합니다.
- 필요한 경우 T- 로그에있는 내용을 실제 파일로 플러시하십시오.
이것이 t- 로그가 백업 단계 동안 트랜잭션 연속의 중요한 부분이기 때문에 기본적으로 잘 리거나 축소되지 않는 이유입니다.
답변
로그 축소와 로그 축소를 혼동하지 마십시오.
-
TRUNCATE는 마지막 체크 포인트 이전의 트랜잭션을 로그에서 제거하는 것입니다 (체크 포인트는 트랜잭션이 데이터베이스 자체로 플러시 될 때임). 이것은 BACKUP 명령을 사용하여 수행됩니다.
-
로그를 축소하려면 실제 로그 파일 크기를 줄이십시오. 이것은 DBCC 명령을 사용하여 수행됩니다.
답변
기본적으로 트랜잭션 로그에는 작업 공간이 필요하기 때문에 트랜잭션 로그를 자동으로 축소 할 필요가 없으며 자동 분석을 자르면 거의 같은 크기로 유지됩니다.